我有一个CompositeDataBoundControl,我试着给它添加一个ItemCommand,就像System.Web.UI.WebControls.Repeater一样,所以我只是想,如果我像这样反射并添加代码,它应该可以工作:
private static readonly object EventItemCommand = new object();
protected override bool OnBubbleEvent(object sender, EventArgs e)
{
// throw new Exception();
bool flag = false;
if (e is RepeaterCommandEventArgs)
{
this.OnItemCommand((RepeaterCommandEventArgs)e);
flag = true;
}
return flag;
}
protected virtual void OnItemCommand(RepeaterCommandEventArgs e)
{
RepeaterCommandEventHandler handler = (RepeaterCommandEventHandler)base.Events[EventItemCommand];
if (handler != null)
{
handler(this, e);
}
}
public event RepeaterCommandEventHandler ItemCommand
{
add
{
base.Events.AddHandler(EventItemCommand, value);
}
remove
{
base.Events.RemoveHandler(EventItemCommand, value);
}
}不幸的是,即使我绑定了事件,它似乎也不会触发。Iv试图沿着IPostBackEventHandler的路线走下去,但它仍然不太正确(我可以在没有args的情况下触发一个空事件,但我看不到用RepeaterCommandEventArgs调用OnItemCommand的好方法
你有什么办法让它工作吗?
在过去的4个小时里,我一直坐在办公室里,试图让它工作起来!帮助!
发布于 2008-11-18 22:16:26
在转发器控件的情况下,RepeaterItem对象实际上引发了气泡事件并提供了RepeaterCommandEventArgs:
protected override bool OnBubbleEvent(object source, EventArgs e)
{
if (e is CommandEventArgs)
{
RepeaterCommandEventArgs args = new RepeaterCommandEventArgs(this, source, (CommandEventArgs) e);
base.RaiseBubbleEvent(this, args);
return true;
}
return false;
}如果你没有在你的控件中使用RepeaterItem,你可能永远也得不到那个RepeaterCommandEventArgs。请尝试检查CommandEventArgs。还要确保您的控件的OnBubbleEvent方法被调用过。
发布于 2008-11-19 12:18:25
我正在使用一个自定义的"RepeaterItem“(例如,( RecipeItem) -我似乎不能让OnBubbleEvent (已经覆盖它并从RepeaterItem中窃取了一些东西)在项目中触发。
不要紧,我是个笨蛋。注释掉了一个DataBind();!
https://stackoverflow.com/questions/299956
复制相似问题