单击EventHandler不激活

时间:2012-01-04 03:27:45

标签: c# asp.net

我在gridviewrow中新创建的按钮没有触发其EventHandler或RowCmmand事件,然后当按下Button新添加的行后重新加载页面时,可能是因为我无法调用我的BindData方法。我已经从Button中删除了Click eventHandler并且只使用了OnRowCommand事件而我仍然没有得到任何东西

protected void CustomGridView_DataBound(object sender, EventArgs e)
{
    int count = ((GridView)sender).Rows.Count;
    GridViewRow row = new GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Insert);

    TableCell cell = new TableCell();
    Button button = new Button();
    button.Text = "Insert";
    button.ID = "Insert";
    button.CommandName = "Insert";
    button.Click += new EventHandler(insertButton_Click);

    cell.Controls.Add(button);
    row.Cells.Add(cell);

    for (int i = 0; i < ((GridView)sender).Columns.Count; i++)
    {
        cell = new TableCell();
        cell.Controls.Add(new TextBox { ID = "Text" + i });
        row.Cells.Add(cell);
    }

    Table table = ((GridView)sender).Rows[0].Parent as Table;
    table.Rows.AddAt(count + 1, row);
}

protected void insertButton_Click(object sender, EventArgs e)
{
    lblInsert.Text = "Hello World";
}

protected void CustomGridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Insert")
    {
        lblInsert.Text = "Hello World";
    }
}

2 个答案:

答案 0 :(得分:2)

从代码中删除button.Click += new EventHandler(insertButton_Click);语句。按下按钮时将触发GridView控件的RowCommand事件。有关详细信息,请访问How to: Respond to Button Events in a GridView Control

答案 1 :(得分:0)

您需要在数据绑定之前附加到网格的RowCommand事件。在页面或usercontrol的构造函数或Init事件上执行,而不是在数据绑定中执行。在数据绑定中,您将设置CommandName和CommandArgument属性。

希望它有所帮助。