如何在gridview RowDataBound c#asp.net中创建按钮单击事件

如何在gridview RowDataBound c#asp.net中创建按钮单击事件,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在尝试在gridview c#asp.net中的rowdatabound中创建按钮并单击事件,如下代码所示 protected void btnerror_Click(object sender, EventArgs e) { GridView gv = new GridView(); gv.RowDataBound += gv_RowDataBound; gv.RowCommand += gv_RowCommand; gv

我正在尝试在gridview c#asp.net中的rowdatabound中创建按钮并单击事件,如下代码所示

 protected void btnerror_Click(object sender, EventArgs e)
{
         GridView gv = new GridView();
        gv.RowDataBound += gv_RowDataBound;
        gv.RowCommand += gv_RowCommand;
        gv.RowCreated += gv_RowCreated;

        gv.EnableViewState = true;

        gv.DataSource = _dt;
        gv.DataBind();
}


void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {

        ImageButton btnUpdate = new ImageButton();

        btnUpdate.ID = "btnupdate";
        btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
        btnUpdate.ToolTip = "Click Update";
        btnUpdate.CommandName = "update";


        btnUpdate.Click += btnUpdate_Click;

        TableCell tc = new TableCell();

        tc.Controls.Add(btnUpdate);
        e.Row.Cells.Add(tc);

    }
}


void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "update")
    {

    }
}
单击该按钮时,单击事件未触发

我犯错误的地方


谢谢您……

您需要为点击事件添加功能

btnUpdate.Click += btnUpdate_Click;

protected void btnUpdate_Click(object sender, EventArgs e)
{

}

是否确实要手动创建
GridView
?我对此深表怀疑。而是以声明方式将其添加到aspx页面,并使其在
b错误\u单击中可见

不要动态创建控件并在
rowdabund
中注册事件处理程序,而是在每次回发时触发的
rowdabund
中注册事件处理程序:

因此,在
RowCreated
中创建它,但在
RowDataBound
中初始化它,您也可以在那里访问数据源(如果需要)


还请注意,您应该
DataBind
GridView
if(!IsPostBack)
而不是每次回发(如果是这种情况)。因此,在分配数据源的位置添加此检查。

是否确实要手动创建
GridView
?我对此深表怀疑。而是将其添加到aspx上,并使其在
btnerror\u单击
中可见。
void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton btnUpdate = new ImageButton();
        btnUpdate.Click += btnUpdate_Click;
        TableCell tc = new TableCell();

        tc.Controls.Add(btnUpdate);
        e.Row.Cells.Add(tc);
    }
}

void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {    
        ImageButton btnUpdate = (ImageButton)e.Row.FindControls("btnupdate") 
        btnUpdate.ID = "btnupdate";
        btnUpdate.ImageUrl = "~/SmartAdmin/Images/update.png";
        btnUpdate.ToolTip = "Click Update";
        btnUpdate.CommandName = "update";
    }
}