回发时找不到动态Gridview列

时间:2014-09-03 04:14:25

标签: c# asp.net gridview

我有一个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++;
            }
        }
    }

我是否在错误的事件中创建了列?

1 个答案:

答案 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);
            }
    }

}

尝试上面的代码,我还没有编译代码,但想知道怎么做,