动态生成的CheckBox的事件生成中的问题

时间:2009-04-01 12:06:37

标签: c# asp.net

我有一个动态生成复选框列的数据网格。我无法做到 为复选框生成checkedChanged事件..

这是我的代码:

public class ItemTemplate : ITemplate
{
    //Instantiates the checkbox
    void ITemplate.InstantiateIn(Control container)
    {
        CheckBox box = new CheckBox();            
        box.CheckedChanged += new EventHandler(this.OnCheckChanged);
        box.AutoPostBack = true;
        box.EnableViewState = true;
        box.Text = text;
        box.ID = id;
        container.Controls.Add(box);
    }

    public event EventHandler CheckedChanged;

    private void OnCheckChanged(object sender, EventArgs e)
    {
        if (CheckedChanged != null)
        {
            CheckedChanged(sender, e);
        }
    }
}

这是事件

private void OnCheckChanged(object sender, EventArgs e)
{

}

提前致谢

2 个答案:

答案 0 :(得分:2)

通常我们在控件上使用了“CommandName”属性。这将传递给GridView的RowCommand事件。然后,您可以检查CommandName的值并相应地执行操作。

答案 1 :(得分:0)

由于您动态添加控件,您还需要将其添加到viewState(请参阅LoadViewState和SaveViewState的覆盖)。

当您进行回发时,该页面没有关于您添加的复选框的信息,这就是您没有收到任何事件的原因。

请查看此文章:http://weblogs.asp.net/infinitiesloop/archive/2006/08/25/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_.aspx

它很好地描述了这些问题。