我有一个约15列的数据集,我也有一个ASP.net gridview。我想知道是否有人知道我可以用数据集填充gridview,但问题是我只想从数据集的一些列。ASP.net以编程方式将数据集绑定到gridview
此刻我只是在做
GridView1.DataSource = ds;
GridView1.DataBind();
但这显然是结合所有从数据集到GridView列。
我有一个约15列的数据集,我也有一个ASP.net gridview。我想知道是否有人知道我可以用数据集填充gridview,但问题是我只想从数据集的一些列。ASP.net以编程方式将数据集绑定到gridview
此刻我只是在做
GridView1.DataSource = ds;
GridView1.DataBind();
但这显然是结合所有从数据集到GridView列。
相同的名称。那么您是否希望在运行时创建列?试试这个:
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。
默认情况下,GridView会根据绑定的数据自动生成所有的列。
设置GridView.AutoGenerateColumns = false
然后通过GridView.Columns
属性定义你想要的列。
将网格AutoGeneratedColumns设置为false,并设置要在GridView设计器或代码中使用的列。但是你必须将列上的DataField属性设置为与
两种方式,我可以看到要做到这一点,取决于你能改变的,什么也留事情是这样的:
1)如果有查询/ proc中产生的数据集的控制,以及可以这样做而不会对其他网格/页面产生不利影响,请修改查询,以便仅选择您使用的列。您仍然可以在JOIN和WHERE中使用未选定的列,并且您可以获得无需将每列添加到ORDER BY的额外奖励。 2)如果您只控制了网格和用于生成它的代码隐藏,则可以将DataGrid参数设置为AutoGenerateColumns = false,然后嵌套到DataGrid中,即需要显示的BoundFields。这也使您能够格式化,创建列名等。
如果您可以执行这两项操作,那么您的网格加载速度也会更快。
SqlCommand comm = new SqlCommand("Select required fields from YourTable, conn);
conn.Open();
SqlDataReader rdr = comm.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
rdr.Close();
这将只打印必填字段。
然后,您可以选择数据集中的那几列。 – Naresh 2011-06-15 14:00:28