gridview里面新建了若干templatefield,比如有“学号,班级,姓名”这三列。datatable里面的列数就比较多,除了“学号,班级,姓名”这三列还有其它列。
现在如果用gridview.datasource = datatable;gridview.databind();就会把datatable里面的数据都显示了,而且是显示在gridview自带的那三列里面,自己新建的列还是空的。
请问要怎么样才能使gridview与datatable里面的列做到一一对应,而不是整个绑定?

解决方案 »

  1.   

    将你GridView中的AutoGenerateColumns设置成false,并且你的TemplateField中的控件的值为你要绑定的数据库中的字段名即可。
    <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
        <Columns>
              <asp:TemplateField>
                    <ItemTemplate>
                          <asp:Label ID="Label1" runat="server" Text='<%#Eval("学号")%>'/>
                    </ItemTemplate>
              </asp:TemplateField>
              <asp:TemplateField>
                    <ItemTemplate>
                          <asp:Label ID="Label2" runat="server" Text='<%#Eval("班级")%>'/>
                    </ItemTemplate>
              </asp:TemplateField>
              <asp:TemplateField>
                    <ItemTemplate>
                          <asp:Label ID="Label3" runat="server" Text='<%#Eval("姓名")%>'/>
                    </ItemTemplate>
              </asp:TemplateField>
        </Columns>
    </asp:GridView>this.gv.DataSource = datatable;
    this.gv.DataBind();
      

  2.   

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" <asp:BoundField DataField="N_1101" HeaderText="记录编号" />
                    <asp:TemplateField HeaderText="操作">
                    <ItemTemplate><a href="User_View.aspx?id=<%# Eval("u_1001") %>">查看</a>  <a href="User_Edit.aspx?id=<%# Eval("U_1001") %>">修改</a>  <a href="?act=del&id=<%# Eval("U_1001") %>">删除</a></ItemTemplate>
                    </asp:TemplateField>
      

  3.   

    设置 AutoGenerateColumns="False" 绑定要线显示的数据
      <ItemTemplate><a href=""><%#Eval("学号")%></a> <a ItemTemplate>
    <ItemTemplate><a href=""><%#Eval("姓名")%></a> <a ItemTemplate>