Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.net以编程方式将数据集绑定到gridview_C#_Asp.net_Data Binding_Gridview - Fatal编程技术网

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

C# ASP.net以编程方式将数据集绑定到gridview,c#,asp.net,data-binding,gridview,C#,Asp.net,Data Binding,Gridview,我有一个大约15列的数据集,还有一个ASP.net gridview。我想知道是否有人知道如何用数据集填充gridview,但问题是我只需要数据集中的一些列 目前我正在做 GridView1.DataSource = ds; GridView1.DataBind(); 但这显然会将数据集中的所有列绑定到gridview。默认情况下,gridview会根据绑定的数据自动生成所有列 设置GridView.AutoGenerateColumns=false,然后通过GridView.

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

目前我正在做

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

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

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


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

将网格AutoGenerateColumns设置为false,并设置要在GridView设计器或代码中使用的列。但是您必须将column上的DataField属性设置为与的名称相同,以便在运行时创建列?试试这个:

或者,您可以在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>


这是错误的

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

1) 如果您可以控制生成数据集的查询/过程,并且可以在不影响其他网格/页面的情况下执行此操作,请修改查询,使其仅选择您使用的列。您仍然可以在JOIN和WHERE中使用未选择的列,并且您还可以获得额外的好处,即不必将每个列添加到ORDER BY

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

如果您可以同时完成这两项工作,那么网格的加载速度也应该更快

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

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

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

rdr.Close();

这将只打印必填字段

然后,您可以将这几列选择到数据集中。