c# - CommandEventArgs 和事件问题

标签 c# asp.net events

我生成了一些按钮并附加了一个像这样的事件处理程序:

Button pgs = new Button();//Create New Topic
pgs.Width = 20;
pgs.Command += obtainTopicsPerPage_Click;
pgs.CommandName = tPage.ToString();
pgs.Text = tPage.ToString();
btns.Add(tPage.ToString());
buttons.Add(pgs);
}

void obtainTopicsPerPage_Click(Object sender, CommandEventArgs e)
{
    foreach (var item in tPages)
    {
        if (item.Key == e.CommandName)
        {
            foreach (var posts in item.Value)
            {
                posts.ExecuteAll();
             }
        }
    }
    MyButtonTable();
}

现在,当我单击按钮时,事件处理程序永远不会触发。我检查了调试器,当我单击按钮时,只有一个回发,但它没有到达事件处理程序函数中

更新:

    void Page_PreInit(object sender, EventArgs e)
{
    List<Button> btn=(List<Button>)ViewState["Buttons"];
    foreach (var item in btn)
    {
            item.Width = 20;
            item.Command += obtainTopicsPerPage_Click; //resigning the eventhandlers from the begining
             item.CommandName = tPage.ToString();
             item.Text = tPage.ToString();
    }
}

最佳答案

动态生成按钮时通常会出现这种情况。当页面回发时,页面不再有按钮,因此无法将它们绑定(bind)到事件处理程序。

最简单的解决方案是确保在每次加载页面时重新生成 Page_Init 中的所有按钮。

关于c# - CommandEventArgs 和事件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6356489/

相关文章:

qt - QCoreApplication::quit() 是否取消所有待处理事件?

asp.net-mvc - ASP.NET MVC PostAuthorizeRequest(和其他事件)未触发

c# - 扩展方法未设置值

c# - NLog无法从属性打印对象?

c# - 在 WHERE 查询中使用数组作为比较

c# - 如何在具有原始参数的浏览器中测试Web服务方法?

c# - 自定义 WebAPI "Access Denied"响应

java - 阻止 java 热键,例如 alt+esc、control-alt-delete

c# - 以编程方式将调试器附加到在另一个应用程序域中运行的代码

asp.net - 我应该在 ViewState 中存储数据库 ID 字段吗?