我有一个gridview,其中的列是动态添加的。但是在回发时,列不再存在。
我知道在调试时,必须在回发时重新创建动态创建的项目,即使创建列代码成功执行,但gridview不包含任何列。
protected void gvUsers_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{ //creating column
List<Module> listModule = getModules();
foreach (Module m in listModule)
{
TemplateField tfield = new TemplateField();
tfield.HeaderTemplate = new TickColumn(m.ModuleName);
gvUsers.Columns.Add(tfield);
}
}
if (e.Row.RowType == DataControlRowType.DataRow)
{ //Creation of checkboxes in the dynamic columns
List<Module> listModule = getModules();
int i = 3; // cell postioning
foreach (Module m in listModule)
{
CheckBox cbActive = new CheckBox();
cbActive.ID = m.ModuleID.ToString();
e.Row.Cells[i].Controls.Add(cbActive); //Error<- because the cell does not have the column
i++;
}
}
}
我是否在错误的事件中创建了列?
答案 0 :(得分:0)
if (e.Row.RowType == DataControlRowType.Header)
{ //creating column
List<Module> listModule = getModules();
foreach (Module m in listModule)
{
TemplateField tfield = new TemplateField();
tfield.HeaderTemplate = new TickColumn(m.ModuleName);
tfield.Controls.Add(cbActive);
CheckBox cbActive = new CheckBox();
cbActive.ID = m.ModuleID.ToString();
gvUsers.Columns.Add(tfield);
}
}
}
尝试上面的代码,我还没有编译代码,但想知道怎么做,