要求数据表的一条记录对应成GridView的两行,例如
姓名      年龄            照片
性别      出生年月 
小王      20
男        1986
小张      21
男        1985
请问改如何实现?

解决方案 »

  1.   

    用itemtemplate,小王      20
    男        1986每一条数据对应一个table不就可以了
      

  2.   

    GridView是动态绑定的,各个列需要动态生成
    现在的做法如下:
    BindGridView()
    {
    TemplateField f1 = new TemplateField();
    f1.ItemTemplate = new MultiRowsTemplateRow();
    gridView1.Columns.Add(f1); gridView1.DataSource = ds;
    gridView1.DataBind();
    }class MultiRowsTemplateRow : ITemplate
    {
    public void InstantiateIn(Container container)
    {
    Label lblBr = new Label();
    lblBr.Text = "<br>";
    Label lblName1 = new Label();
    lblName1.Text = "xiao";
    Label lblName2 = new Label();
    lblName2.Text = "wang"; container.Controls.Add(lblName1);
    container.Controls.Add(lblBr);
    container.Controls.Add(lblName2);
    }}这种方法Label不是从数据库里面取的,怎样实现跟数据源的绑定?
    是不是可以用TemplateField里面放两个BoundField来实现?
      

  3.   

    jsyhello(不认输):
    现在程序已经用GridView做了,用别的,改动太大xyunsh(学海无涯,回头是岸) 
       能说清楚一点吗?GridView各列是动态生成的
      

  4.   

    把你做的各个列都转换成模版列
    然后和DataList中的做法是一样的
      

  5.   

    能具体一点吗
    DataList没有用过
      

  6.   

    可以将datagrid设一个模板列,模板列中插入table,table中再插入label,在datagrid的itemdatabind中设置label的text就行了
      

  7.   

    是不是想实现以下样式的啊?
    -----------------------------------------------
         姓名    |       年龄        |      照片
         性别    |     出生年月      |
    -----------------------------------------------
         姓名    |       年龄        |      照
    ---------------------------------|      
         性别    |       年月        |      片
    -----------------------------------------------
         姓名    |       年龄        |      照
    ---------------------------------|      
         性别    |       年月        |      片
    -----------------------------------------------
    .....
    如果是,那你应该可以用GridView的模板列来做
    只要修改.aspx中的模板就可以了,具体的你去找找帮助,有很详细的使用说明,这不赘述但看你的样子是在后台处理过再输出的
    这样的话,你可以尝试构建一个Table对象(System.Web.UI.HtmlControls.HtmlTable)
    你构建好一个类似上面的行列,将你需要的值填充好
    直接输出,应该能够达到你的要求
      

  8.   

    模版列可以定义任何行数<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
    <asp:TemplateField>
      <HeaderTemplate>
        <input type="checkbox" onclick="SelAll()" /></HeaderTemplate>
      <ItemTemplate>
        <input type="checkbox" name="guid" value="<%#Eval("ExpertID") %>" />
      </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField HeaderText="专家名称" DataField="DisplayName" />
    <asp:BoundField HeaderText="专家介绍" DataField="Description" />
    <asp:TemplateField>
      <ItemTemplate>
        <table width="100%" border="1">
          <tr>
            <td>
              <%#Eval("DisplayName") %>
            </td>
            <td>
              <%#Eval("DisplayName") %>
            </td>
            <td rowspan="2">
              <%#Eval("DisplayName") %>
            </td>
          </tr>
          <tr>
            <td>
              <%#Eval("DisplayName") %>
            </td>
            <td>
              <%#Eval("DisplayName") %>
            </td>
          </tr>
        </table>
      </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>
      

  9.   

    to mistysunlight(飘渺日光) 是的,ItemTemplate是要在后台构建的,以为ItemTemplate的内容不是固定的,有好几种类型
    你的意思是不用GridView吗
      

  10.   

    ------------------------------------------
    我再说一下我的问题吧
    现在TemplateField需要在后台生成(因为TemplateField里面的列不是固定的,有多种类型)
    怎么在后台绑定TemplateField的列到数据表的字段
    我知道BoundField绑定很简单,
    直接BoundField field = new BoundField()
    field.DataField = "name";
    gridView1.Columns.Add(field);就可以了TemplateField该怎么做?------------------------------------------