我尝试使用动态列创建网格视图,此列由复选框组成,复选框必须能够触发onchange事件。
protected void Page_Load(object sender, EventArgs e) {
LoadTable();
}
LoadTables() - 根据用户订阅的模块列表动态创建列。
private void LoadTable()
{
List<Module> ListModule = getModules(UserID);
foreach (Module m in ListModule)
{
TemplateField tfield = new TemplateField();
tfield.HeaderText = m.ModuleName;
gv.Columns.Add(tfield);
}
gv.DataBind();
}
OnTheRowBound,会创建一个复选框并将其添加到表格中。如何为复选框添加触发事件?
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
List<Module> ListModule = getModules(UserID);
int i = 2; // cell postioning
foreach (Module m in ListModule)
{
CheckBox cbActive = new CheckBox();
cbActive.ID = m.ModuleIDs;
cbActive.Checked = Convert.ToBoolean((e.Row.DataItem as DataRowView).Row["isActive"].ToString());
//How do i add an onCheckChanged event to trigger whenever the checkbox value is changed?
//Something like: cbActive.CheckedChanged = "SelectCheckBox_OnCheckedChanged"
cbActive.AutoPostBack = true;
e.Row.Cells[i].Controls.Add(cbActive);
i++;
}
}
}
protected void SelectCheckBox_OnCheckedChanged(object sender, EventArgs e)
{
//Update Database.
}
我做错了吗?有没有更好的方法来创建此功能?
答案 0 :(得分:2)
只是将其发布为答案而不是评论
您可以使用以下代码注册活动
cbActive.CheckedChanged += SelectCheckBox_OnCheckedChanged
另一部分应该没有问题。
答案 1 :(得分:1)
试试这个:
cbActive.CheckedChanged += new EventHandler(cbActive_CheckedChanged);
处理程序:
protected void cbActive_CheckedChanged(object sender, EventArgs e)
{
//your code here...
}