网格视图显示数据表绑定后面的代码中的2列

时间:2012-09-07 04:05:02

标签: c# asp.net vb.net

如果gridview绑定在自动生成的表后面的代码中,我如何只在网格视图中显示两个列?现在,当我只想显示两列时,它会显示六列?

这是我的.aspx页面代码:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server">

                <columns>
          <asp:boundfield datafield="Drug" headertext="ddddrug"/>
          <asp:boundfield datafield="date" headertext="ddddate"/>

        </columns>


        </asp:GridView>
    </div>
    </form>
</body>
</html>

这是代码背后的代码:

Imports System.Data

Partial Class Default2
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    ' auto generated table
        Dim table2 As New DataTable
        ' Create four typed columns in the DataTable.
        table2.Columns.Add("ID", GetType(Integer))
        table2.Columns.Add("Drug", GetType(String))
        table2.Columns.Add("Patient", GetType(String))
        table2.Columns.Add("Date", GetType(DateTime))
        ' Add five rows with those columns filled in the DataTable.
        table2.Rows.Add(25, "Indocin", "David", DateTime.Now)
        table2.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
        table2.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
        table2.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
        table2.Rows.Add(1100, "Dilantin", "Melanie", DateTime.Now)
        table2.Rows.Add(125, "Indocin", "David", DateTime.Now)
        table2.Rows.Add(150, "Enebrel", "Sam", DateTime.Now)
        table2.Rows.Add(110, "Hydralazine", "Christoff", DateTime.Now)

        GridView1.DataSource = table2

        GridView1.DataBind()

    End Sub

    End Sub
End Class

3 个答案:

答案 0 :(得分:2)

忽略您拥有的数据超出了您的需求。将AutoGenerateColumns设置为false。为您需要显示的列创建BoundColumns。示例:

BoundColumn nameColumn = new BoundColumn();
nameColumn.DataField = "Drug";
nameColumn.DataFormatString = "{0}";
nameColumn.HeaderText = "Drug";

然后将此BoundColumn添加到gridview。

GridView1.Columns.Add(nameColumn);
GridView1.AutoGenerateColumns = false;

答案 1 :(得分:1)

默认情况下,网格将尝试显示DataSource中的所有列(公共可浏览属性)。如果您只想显示两个,则应按如下方式关闭它:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
       <columns>
          <asp:boundfield datafield="Drug" headertext="ddddrug"/>
          <asp:boundfield datafield="date" headertext="ddddate"/>
       </columns>
</asp:GridView>

答案 2 :(得分:1)

将AutoGenerateColumns设置为false并将字段绑定为:

  <asp:BoundField DataField="Drug"  HeaderText="ddddrug" >
        <HeaderStyle CssClass="Your class" />
  </asp:BoundField>
  <asp:BoundField DataField="date" DataFormatString="{0:yyyy/MM/dd}"  HeaderText="ddddate" >
        <HeaderStyle CssClass="Your class" />
  </asp:BoundField>

如果您还想在标题中应用CssClass。

相关问题