C# ASP.net以编程方式将数据集绑定到gridview
我有一个大约15列的数据集,还有一个ASP.net gridview。我想知道是否有人知道如何用数据集填充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.
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();
这将只打印必填字段 然后,您可以将这几列选择到数据集中。