我有一個約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