ASP.net以编程方式将数据集绑定到gridview
本文关键字:数据集 绑定 gridview 方式 net 编程 ASP | 更新日期: 2023-09-27 17:59:08
我有一个大约有15列的数据集,我还有一个ASP.net网格视图。我想知道是否有人知道我如何用数据集填充网格视图,但问题是我只想要数据集中的一些列。
现在我只是在做
GridView1.DataSource = ds;
GridView1.DataBind();
但这显然将数据集中的所有列绑定到了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();
这将只打印必填字段。