asp.net - 动态创建元素的服务器控件的事件处理

标签 asp.net gridview servercontrols

我正在创建继承自 GridVew 的服务器控件。 我有一些在控件内动态创建的图像按钮,对于每个按钮,我都有应该执行某些操作的事件。 一切看起来都不错,但事件从未被触发。 这是我的代码的一部分:

//Class with dynamically created elements (custom grid pager)
public class GridPager
{
     public event CommandEventHandler PageNumberClick;

     //Element creation inside for scope
     for(....)
     {
        ImageButton img = new ImageButton();
        img.ImageAlign = ImageAlign.AbsMiddle;
        img.ID = "lnkLastPage" + i.ToString();
        img.CommandName = "Page";
        img.CommandArgument = ((totalPages - 1) * maxPageRows).ToString();
        imgBtn.Command += new CommandEventHandler(PageNumberClick);            
        tableCell.Controls.Add(img);
     }
}

public class MyGridControl : GridView  
{
    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]

    GridPager.PageNumberClick += new CommandEventHandler(lnkPage_Click);

    void lnkPage_Click(object sender, CommandEventArgs e)
    {
       PageIndex = Int32.Parse(e.CommandArgument.ToString());
       BindData();
    }
}

最佳答案

您需要在每次回发时重新创建动态控件 - 请记住,每次回发都会创建页面的新类实例,因此您之前创建的任何动态控件都需要重新创建。

参见this article

and this one

关于asp.net - 动态创建元素的服务器控件的事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12687028/

相关文章:

ASP.Net:将客户端onClick添加到GridView中的HyperlinkField中

c# - 使用 Javascript 删除 GridviewRow?

c# - 将 gridview 导出到 Excel 时无法识别阿拉伯字符

asp.net - ASP.NET 的类似 Excel 的服务器端控件

javascript - MVC 模型绑定(bind) jQuery Ajax

asp.net - 我使用 godaddy 托管并希望拥有 ASP.NET 成员(member)数据库。有多少个用户帐户将使数据库大小达到 200 MB?

asp.net - 如何在asp.net代码后面的html标签中添加事件处理程序?

gridview - 如何在 Yii CGridView 中处理选定的行?

asp.net - 防止包装 ASP.NET 服务器控件的 <span> 标记