如何在gridview RowDataBound c#asp.net中创建按钮单击事件
我正在尝试在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") { } }
点击该按钮点击事件未触发…
我犯错误的地方……
感谢你…….
你真的想手动创建GridView
吗? 我强烈怀疑。 而是以声明方式将其添加到aspx页面并使其在btnerror_Click
可见。
不要动态创建控件并在RowDataBound
注册事件处理程序,但在每次回发时触发的RowCreated
中(与RowDataBound
相反):
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"; } }
因此,在RowCreated
创建它,但在RowDataBound
中初始化它,您也可以在其中访问数据源(如果需要)。
另请注意, if(!IsPostBack)
不在每个回发上(如果是这种情况), if(!IsPostBack)
应该只对DataBind
GridView
。 因此,在分配数据源的位置添加此检查。
您需要为click事件添加function
btnUpdate.Click += btnUpdate_Click; protected void btnUpdate_Click(object sender, EventArgs e) { }