GridView 多表头问题
数据库设计:l_proj_id,l_field_id,field_name,parent_id,field_value,has_child
分别表示工程id,字段id(储存在一个专门管理字段的字典表中),字段名,父字段id,字段值,是否有子字段
改表的一条记录表示一个工程的一个字段的记录(字段是动态管理的)
想实现一个这样的GridView:绑定到动态生成的DataTable对象,这个DataTable对象每一行表示一个工程,有个静态的ID列对应l_proj_id字段,其他各列根据上面这个数据表动态生成(所有l_proj_id相同的l_field_id),由于包含子字段的字段需要定义模板(通过查询子字段在HeaderTemplate和ItemTemplate中生成Table对象),于是我定义了一个实现了 ITemplate接口的GirdViewTemplate模板类.在模板类的ItemTemplate定义中,需要知道所在行对应的l_proj_id,和所在列对应的l_field_id,来确定子字段的值(field_value),请问这两个如何获得?
--------------------编程问答-------------------- up...
--------------------编程问答-------------------- 项目id 父字段
子字段1 子字段2
1 值1 值2
如上所示,要在父子段这个列中生成这样的模板列,表头是两层结构,内容是一层分开的结构。
--------------------编程问答-------------------- 自己up以下 --------------------编程问答-------------------- protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
case DataControlRowType.Header:
//第一行表头
TableCellCollection tcHeader = e.Row.Cells;
TableCellCollection th = tcHeader;
tcHeader.Clear();
tcHeader.Add(new TableHeaderCell());
tcHeader[0].Attributes.Add("rowspan", "3"); //跨Row
tcHeader[0].Attributes.Add("bgcolor", "white");
tcHeader[0].Text = "";
tcHeader.Add(new TableHeaderCell());
//tcHeader[1].Attributes.Add("bgcolor", "Red");
tcHeader[1].Attributes.Add("colspan", "13"); //跨Column
tcHeader[1].Text = "全部信息</th></tr><tr>";
//第二行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[2].Attributes.Add("bgcolor", "DarkSeaGreen");
tcHeader[2].Text = "身份证号码";
tcHeader.Add(new TableHeaderCell());
tcHeader[3].Attributes.Add("bgcolor", "LightSteelBlue");
tcHeader[3].Attributes.Add("colspan", "4");
tcHeader[3].Text = "基本信息";
tcHeader.Add(new TableHeaderCell());
tcHeader[4].Attributes.Add("bgcolor", "DarkSeaGreen");
tcHeader[4].Text = "福利";
tcHeader[4].Attributes.Add("colspan", "4");
tcHeader.Add(new TableHeaderCell());
tcHeader[5].Attributes.Add("bgcolor", "LightSteelBlue");
tcHeader[5].Attributes.Add("colspan", "4");
tcHeader[5].Text = "联系方式</th></tr><tr>";
//第三行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[6].Attributes.Add("bgcolor", "Khaki");
tcHeader[6].Text = "身份证号码";
tcHeader.Add(new TableHeaderCell());
tcHeader[7].Attributes.Add("bgcolor", "Khaki");
tcHeader[7].Text = "姓名";
tcHeader.Add(new TableHeaderCell());
tcHeader[8].Attributes.Add("bgcolor", "Khaki");
tcHeader[8].Text = "出生日期";
tcHeader.Add(new TableHeaderCell());
tcHeader[9].Attributes.Add("bgcolor", "Khaki");
tcHeader[9].Text = "薪水";
tcHeader.Add(new TableHeaderCell());
tcHeader[10].Attributes.Add("bgcolor", "Khaki");
tcHeader[10].Text = "家庭住址";
tcHeader.Add(new TableHeaderCell());
tcHeader[11].Attributes.Add("bgcolor", "Khaki");
tcHeader[11].Text = "邮政编码";
tcHeader[11].Attributes.Add("colspan", "8");
break;
}
} --------------------编程问答-------------------- 如楼上的在RowCreated中建立你的表头
把它想成一个table操作 --------------------编程问答-------------------- 受教了
补充:.NET技术 , ASP.NET