2011-06-15 48 views
6

我有一个约15列的数据集,我也有一个ASP.net gridview。我想知道是否有人知道我可以用数据集填充gridview,但问题是我只想从数据集的一些列。ASP.net以编程方式将数据集绑定到gridview

此刻我只是在做

GridView1.DataSource = ds; 
    GridView1.DataBind(); 

但这显然是结合所有从数据集到GridView列。

+2

然后,您可以选择数据集中的那几列。 – Naresh 2011-06-15 14:00:28

回答

10

相同的名称。那么您是否希望在运行时创建列?试试这个:

http://www.codeproject.com/KB/aspnet/dynamic_Columns_in_Grid.aspx

或者,你可以在ASPX提前配置你的GridView:

<Columns> 
    <asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" /> 
    <asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" /> 
    <asp:BoundField DataField="UnitPrice" DataFormatString="{0:c}" HeaderText="Price" HtmlEncode="False" SortExpression="UnitPrice" /> 
</Columns> 

并确保您设置AutoGenerateColumns为false。

7

默认情况下,GridView会根据绑定的数据自动生成所有的列。

设置GridView.AutoGenerateColumns = false然后通过GridView.Columns属性定义你想要的列。

1

将网格AutoGeneratedColumns设置为false,并设置要在GridView设计器或代码中使用的列。但是你必须将列上的DataField属性设置为与

2

两种方式,我可以看到要做到这一点,取决于你能改变的,什么也留事情是这样的:

1)如果有查询/ proc中产生的数据集的控制,以及可以这样做而不会对其他网格/页面产生不利影响,请修改查询,以便仅选择您使用的列。您仍然可以在JOIN和WHERE中使用未选定的列,并且您可以获得无需将每列添加到ORDER BY的额外奖励。 2)如果您只控制了网格和用于生成它的代码隐藏,则可以将DataGrid参数设置为AutoGenerateColumns = false,然后嵌套到DataGrid中,即需要显示的BoundFields。这也使您能够格式化,创建列名等。

如果您可以执行这两项操作,那么您的网格加载速度也会更快。

0
SqlCommand comm = new SqlCommand("Select required fields from YourTable, conn); 

conn.Open(); 
SqlDataReader rdr = comm.ExecuteReader(); 

GridView1.DataSource = rdr; 
GridView1.DataBind(); 

rdr.Close(); 

这将只打印必填字段。

相关问题