2011-06-15 49 views
6

我有一個約15列的數據集,我也有一個ASP.net gridview。我想知道是否有人知道我可以用數據集填充gridview,但問題是我只想從數據集的一些列。ASP.net以編程方式將數據集綁定到gridview

此刻我只是在做

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

但這顯然是結合所有從數據集到GridView列。

+2

然後,您可以選擇數據集中的那幾列。 – Naresh 2011-06-15 14:00:28

回答

10

相同的名稱。那麼您是否希望在運行時創建列?試試這個:

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。

7

默認情況下,GridView會根據綁定的數據自動生成所有的列。

設置GridView.AutoGenerateColumns = false然後通過GridView.Columns屬性定義你想要的列。

1

將網格AutoGeneratedColumns設置爲false,並設置要在GridView設計器或代碼中使用的列。但是你必須將列上的DataField屬性設置爲與

2

兩種方式,我可以看到要做到這一點,取決於你能改變的,什麼也留事情是這樣的:

1)如果有查詢/ proc中產生的數據集的控制,以及可以這樣做而不會對其他網格/頁面產生不利影響,請修改查詢,以便僅選擇您使用的列。您仍然可以在JOIN和WHERE中使用未選定的列,並且您可以獲得無需將每列添加到ORDER BY的額外獎勵。 2)如果您只控制了網格和用於生成它的代碼隱藏,則可以將DataGrid參數設置爲AutoGenerateColumns = false,然後嵌套到DataGrid中,即需要顯示的BoundFields。這也使您能夠格式化,創建列名等。

如果您可以執行這兩項操作,那麼您的網格加載速度也會更快。

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

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

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

rdr.Close(); 

這將只打印必填字段。

相關問題