2012-10-02 40 views
3

我正在创建从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(); 
    } 
} 

回答

0

您需要重新创建动态控件on every postback - 记住你的页面的一个新的类实例被创建的每个回发,让你先前创建的时间将需要的任何动态控件重建。

看到this article

and this one

+0

我重建他们包括所有的变化值,但我能不火的事件。 –

相关问题