当前位置: 代码迷 >> .NET组件控件 >> Grid手动添加模板列数据丢失有关问题
  详细解决方案

Grid手动添加模板列数据丢失有关问题

热度:6101   发布时间:2013-02-25 00:00:00.0
Grid手动添加模板列数据丢失问题
我写了一个自定义用户,里面封装了一个GridView,在调用使用代码方式来添加列,但是在添加模板列时出现了一点问题

C# code
//这是添加模板列的代码//添加头模板dt_name.HeaderTemplate = new Bussiness.CollapsibleGridViewBussiness<CheckBox>(DataControlRowType.Header, "仓库名称", null, null);//添加普通状态的模板            dt_name.ItemTemplate = new Bussiness.CollapsibleGridViewBussiness<Label>(DataControlRowType.DataRow, "",null , new string[] { "dt_name" });            DropDownList ddl = new DropDownList();            ddl.ID = "ddl1";            ddl.Width = 75;//添加被编辑状态下的模板            dt_name.EditItemTemplate = new Bussiness.CollapsibleGridViewBussiness<DropDownList>(DataControlRowType.DataRow,"", ddl, null);


数据在回发给服务器时,模板列的数据丢失了.

C# code
//这是RowEditing事件触发后调用的方法bool Edit(int RowIndex)    {        //Rows[RowIndex].Cells[2]是模板列,但是取值不到        string dt_name = CollapsibleGridView1.gv.Rows[RowIndex].Cells[2].Text;        CollapsibleGridView1.gv.EditIndex = RowIndex;        //数据绑定        CollapsibleGridView1.bindevent();        //而在数据绑定后(转成Edit状态后)则可以取到Cells[2]的控件        DropDownList ddl = CollapsibleGridView1.gv.Rows[RowIndex].Cells[2].Controls[0] as DropDownList;        sb.SetShopUpdateDDL(ddl, dt_name);        return false;    }


流程描述为:

第一次进入页面,数据绑定 > 点击编辑 > 回发 > 触发Edit方法 > 此时无法取值Cells[2]中的值 
> 数据绑定后 > 可以取值Calls[2]种的值
请各位大大们赐教~

------解决方案--------------------------------------------------------
动态添加的模板列貌似应写在page_load当中,楼主的写在那里的.
------解决方案--------------------------------------------------------
动态添加的模板列需要在

protected override void OnInit(EventArgs e)

里添加;否则没状态;
每次都得吧那些控件添加上去;

因为,动态添加模板不会被系统保持所以每次都需要添加一次的!
------解决方案--------------------------------------------------------
需要在事件OnInit中寫,你的系统刷一次需要重新动态添加一次
  相关解决方案