当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,