我在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";
}
}
答案 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属性。
希望它有所帮助。