动态生成GridView,模板列中Button触发RowCommand问题
生成GridView的函数:
GridView GridView1 = new GridView();
GridView1.ID = "gv";
GridView1.AutoGenerateColumns = false;
GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand);
GridView1.EnableViewState = true;
GridView1.DataSourceID = "SqlDataSource2";
TemplateField audi = new TemplateField();
audi.ShowHeader = true;
audi.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "");
audi.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
GridView1.Columns.Add(audi);
BoundField name = new BoundField();
name.HeaderText = "单位";
name.DataField = "name";
GridView1.Columns.Add(name);
string[] aa = { "id" };
GridView1.DataKeyNames = aa;
viewPanel.Controls.Add(GridView1);
GridView1.DataBind();
GridView_DataBind(GridView1);
为模板列里的按钮添加属性的函数:
Button bt = (Button)(GridView1.Rows[i].Cells[0].FindControl("state"));
bt.Text = "未审核";
bt.Enabled = true;
bt.CommandName = dr[1].ToString();
bt.CommandArgument = GridView1.DataKeys[i].Value.ToString();
没有触发RowCommand,请高手帮忙
顺便说一下,用LinkButton也不行
------解决方案--------------------是在GridView事件触发的.不是你添加的Button事件中.
------解决方案--------------------把你的按钮事件在GridView的RowCreat事件中绑定就可以了。
听起来也许有点绕,多读两遍就明白了。
------解决方案--------------------以前也遇到过类似的问题,不过GridView不是动态加载的,
只有各行的部分格子里面的控件是动态生成的,
为他们绑定事件的时候必须要在RowCreat事件中触发。
建议搂主把完整代码发出来,大家也好帮忙解决。
------解决方案--------------------GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand);
要写在页面添加GridView1的后面
如:
form1.Controls.Add(gdv);
gdv.RowCommand += new GridViewCommandEventHandler(gdv_RowCommand);