gpt4 book ai didi

c# - 将 ItemCommand 添加到 CompositeDataBoundControl

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:25 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com