C# 单击EventHandler不触发

C# 单击EventHandler不触发,c#,asp.net,C#,Asp.net,我在gridviewrow中新创建的按钮没有触发其EventHandler或RowCmmand事件,当按下按钮后重新加载页面时,新添加的行可能会丢失,因为我无法调用BindData方法。我已经从按钮中删除了Click eventHandler,只使用了OnRowCommand事件,但仍然没有得到任何结果 protected void CustomGridView_DataBound(object sender, EventArgs e) { int count = ((GridView)

我在gridviewrow中新创建的按钮没有触发其EventHandler或RowCmmand事件,当按下按钮后重新加载页面时,新添加的行可能会丢失,因为我无法调用BindData方法。我已经从按钮中删除了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";
    }
}
受保护的void CustomGridView\u数据绑定(对象发送方,事件参数e)
{
int count=((GridView)sender).Rows.count;
GridViewRow行=新的GridViewRow(-1,-1,DataControlRowType.DataRow,DataControlRowState.Insert);
TableCell=新的TableCell();
按钮按钮=新按钮();
button.Text=“插入”;
button.ID=“插入”;
button.CommandName=“插入”;
按钮.Click+=新建事件处理程序(insertButton\u Click);
单元格.控件.添加(按钮);
行.单元格.添加(单元格);
对于(int i=0;i<((GridView)sender).Columns.Count;i++)
{
单元格=新表单元格();
添加(新文本框{ID=“Text”+i});
行.单元格.添加(单元格);
}
Table Table=((GridView)sender).行[0].父表为表;
table.Rows.AddAt(count+1,row);
}
受保护的void insertButton_单击(对象发送方,事件参数e)
{
lblInsert.Text=“你好,世界”;
}
受保护的void CustomGridView1_row命令(对象发送方,GridViewCommandEventArgs e)
{
如果(如CommandName==“插入”)
{
lblInsert.Text=“你好,世界”;
}
}

删除
按钮。单击+=新建事件处理程序(插入按钮\u单击)来自代码的语句。按下按钮时将触发GridView控件的
row命令
事件。有关详细信息-。

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


希望它能有所帮助。

一定有一个可靠的原因——为什么代码没有按预期运行。请具体说明并重新表述您的问题。@KDM-在代码段中,您正在第[0]行添加行。在行[0]处添加TableRow的原因是什么?没有即时消息将行添加到gridview的末尾。行[0]。Parent向我提供gridview的表。如果我错了,请更正我,以便我可以进行更改。我让它运行并最终注册。因为某种原因,它就是不起作用我照你说的做了worked@KDM-谢谢!您可能忘记了在每次回发时绑定GridView。(必须创建动态添加的控件,并在每次回发时注册其事件)。