- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 CompositeDataBoundControl,我正试图向它添加一个 ItemCommand,ala System.Web.UI.WebControls.Repeater - 就像一个 NumPy 的人,我只是想如果我像这样反射并添加代码,它应该工作:
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);
}
}
不幸的是,即使我绑定(bind)了事件,它似乎也没有触发。我试图沿着 IPostBackEventHandler 的路线走下去,但它仍然不太正确(我可以在没有 args 的情况下触发一个空事件,但我看不到用 RepeaterCommandEventArgs 调用 OnItemCommand 的好方法
有什么想法可以让它发挥作用吗?
在过去的 4 个小时里,我一直坐在办公室里,试图让它发挥作用!帮助!
最佳答案
在 Repeater 控件的情况下,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 方法。
关于c# - 将 ItemCommand 添加到 CompositeDataBoundControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299956/
我有一个 CompositeDataBoundControl,我正试图向它添加一个 ItemCommand,ala System.Web.UI.WebControls.Repeater - 就像一个
我已经创建了一个 CompositeDataBoundControl,我可以很好地进行数据绑定(bind)。现在我想做同样的事情,但不是针对对象列表,而是针对单个对象。原因是我希望我的同事能够在他们的
我是一名优秀的程序员,十分优秀!