动态创建元素的服务器控件事件处理

3

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

//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();
    }
}
1个回答

0

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

请参阅本文

以及这篇文章


我正在重新创建它们,包括所有更改的值,但我无法触发事件。 - Konstantin Fedoseev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接