除了自定义名称外,还获取 gridview 中 table 列的名称
Getting name of table columns in gridview in addition to custom names
我的 ASPX 页面上有一个简单的网格,我将它与来自 select 按钮单击事件查询的数据绑定。我不确定如何将此 table 的列与我的网格绑定,因为目前我得到 8 列,其中 4 列带有 aspx 页面中给出的 header,4 列带有 header 的 table 列。下面是我的按钮点击事件代码。
protected void btnSearch_Click(object sender, EventArgs e)
{
MyBookListCont myBookListCont = new MyBookListCont();
gdvMyBooks.DataSource = myBookListCont.SearchBookDetailsCont();
gdvMyBooks.DataBind();
}
下面是gridview的aspx代码。
<asp:GridView ID="gdvMyBooks" runat="server">
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
</Columns>
</asp:GridView>
看起来像一个愚蠢的问题,但将不胜感激。
您必须将 GridView.AutoGenerateColumns
设置为 false :
<asp:GridView ID="gdvMyBooks" runat="server" AutoGenerateColumns="False">
否则,它将绑定您对象的所有字段。
这是因为您在此设计代码中明确指定了 4 列:
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
</Columns>
现在在这里,如您所见,有一个 HeaderText
属性 将覆盖 table 列名称并显示此处提到的文本。
这里有几个选项可供您尝试:
首先,如果您希望像这样的所有列都带有自定义 header 文本,您也可以使用这 4 个以相同的方式定义所有其他列。这将根据给定的 format.Something 显示所有数据和列 headers,如下所示:
<asp:GridView ID="gdvMyBooks" AutoGenerateColumns="False" runat="server">
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
//other columns using same syntax as above.
</Columns>
</asp:GridView>
此外,如果您不想绑定查询中的所有列,您可以在 gridview 中使用此属性,
AutoGenerateColumns = False
并且只需像您目前所做的那样指定您需要的列。
另一件事是,如果您想立即将查询中的结果绑定到您的 GridView
,那么只需删除那 4 个 BoundField
语句并保持原样。这会将您的 table 绑定到 GridView
,并使用与列名称相同的 header 名称。
我希望这能让事情变得清楚。
我的 ASPX 页面上有一个简单的网格,我将它与来自 select 按钮单击事件查询的数据绑定。我不确定如何将此 table 的列与我的网格绑定,因为目前我得到 8 列,其中 4 列带有 aspx 页面中给出的 header,4 列带有 header 的 table 列。下面是我的按钮点击事件代码。
protected void btnSearch_Click(object sender, EventArgs e)
{
MyBookListCont myBookListCont = new MyBookListCont();
gdvMyBooks.DataSource = myBookListCont.SearchBookDetailsCont();
gdvMyBooks.DataBind();
}
下面是gridview的aspx代码。
<asp:GridView ID="gdvMyBooks" runat="server">
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
</Columns>
</asp:GridView>
看起来像一个愚蠢的问题,但将不胜感激。
您必须将 GridView.AutoGenerateColumns
设置为 false :
<asp:GridView ID="gdvMyBooks" runat="server" AutoGenerateColumns="False">
否则,它将绑定您对象的所有字段。
这是因为您在此设计代码中明确指定了 4 列:
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
</Columns>
现在在这里,如您所见,有一个 HeaderText
属性 将覆盖 table 列名称并显示此处提到的文本。
这里有几个选项可供您尝试:
首先,如果您希望像这样的所有列都带有自定义 header 文本,您也可以使用这 4 个以相同的方式定义所有其他列。这将根据给定的 format.Something 显示所有数据和列 headers,如下所示:
<asp:GridView ID="gdvMyBooks" AutoGenerateColumns="False" runat="server">
<Columns>
<asp:BoundField DataField="BK_NM" HeaderText="Book Name" />
<asp:BoundField DataField="ATHR_NM" HeaderText="Author Name" />
<asp:BoundField DataField="BUY_YR" HeaderText="Buy Year" />
<asp:BoundField DataField="PRICE" HeaderText="Price" />
//other columns using same syntax as above.
</Columns>
</asp:GridView>
此外,如果您不想绑定查询中的所有列,您可以在 gridview 中使用此属性,
AutoGenerateColumns = False
并且只需像您目前所做的那样指定您需要的列。
另一件事是,如果您想立即将查询中的结果绑定到您的 GridView
,那么只需删除那 4 个 BoundField
语句并保持原样。这会将您的 table 绑定到 GridView
,并使用与列名称相同的 header 名称。
我希望这能让事情变得清楚。