ASP.net以编程方式将数据集绑定到gridview

本文关键字:数据集 绑定 gridview 方式 net 编程 ASP | 更新日期: 2023-09-27 17:59:08

我有一个大约有15列的数据集,我还有一个ASP.net网格视图。我想知道是否有人知道我如何用数据集填充网格视图,但问题是我只想要数据集中的一些列。

现在我只是在做

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

但这显然将数据集中的所有列绑定到了gridview。

ASP.net以编程方式将数据集绑定到gridview

所以您希望在运行时创建列?试试这个:

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

或者,您可以在aspx:中提前配置您的网格视图

<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>

并确保将"自动生成列"设置为false。

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

设置GridView.AutoGenerateColumns = false,然后通过GridView.Columns属性定义所需的列。

我可以看到两种方法来做到这一点,这取决于你可以改变什么和必须保持现状:

1) 如果您可以控制生成数据集的查询/proc,并且这样做不会对其他网格/页面产生不利影响,请修改查询,使其仅选择您使用的列。您仍然可以在JOIN和WHERE中使用未选择的列,并且您还可以获得额外的好处,即不必将每一列都添加到ORDERBY.

2) 如果您只能控制网格和用于生成它的代码绑定,则可以将AutoGenerateColumns=false设置为DataGrid参数,然后在DataGrid中嵌套需要显示的BoundFields。这也允许您格式化、制作列名等。

如果您能同时做到这两件事,那么您的网格也应该加载得更快。

将网格AutoGeneratedColumns设置为false,并设置要在网格视图设计器或代码中使用的列。但是您必须将列上的DataField属性设置为与的名称相同

SqlCommand comm = new SqlCommand("Select required fields from YourTable, conn);
conn.Open();
SqlDataReader rdr = comm.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
rdr.Close();

这将只打印必填字段。