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

时间:2011-06-15 13:54:06

标签: c# asp.net data-binding gridview

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

目前我正在做

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

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

5 个答案:

答案 0 :(得分: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。

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

我可以通过两种方式来实现这一目标,具体取决于您可以改变的内容以及保持原样的方式:

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

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

如果你可以做这两件事,你的网格也应该加载得更快。

答案 3 :(得分:1)

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

的名称相同

答案 4 :(得分:0)

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

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

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

rdr.Close();

这将仅打印必填字段。