2011-08-05 51 views
0

我有一個DataGridView和一個DataSource。 DataGridView爲每個屬性自動生成列。我想改變它,以便以不同的方式獲取列的數據。從其他屬性獲取DataGridView的數據

如何確定DataGridView如何從數據源中的項獲取列和值?

回答

0

隨着DataGridView.VirtualMode屬性,您可以提供自己的數據存儲:

虛擬模式是設計用於數據非常大店。當虛擬模式屬性爲 時,您創建一個具有一組行數和列數的DataGridView,然後處理事件 以填充單元格。虛擬模式需要實現基礎數據高速緩存以基於用戶的操作處理DataGridView單元格的填充,編輯和刪除 。有關實施虛擬模式的更多信息,請參閱How to: Implement Virtual Mode in the Windows Forms DataGridView Control

1

它可能使用反射,你想攔截並修改那個行爲嗎?

通常,當默認的自動列生成不夠時,我禁用它並從代碼中靜態創建列或解析配置文件,然後可以將其擴展,以便在不重建整個項目的情況下生成新列或以不同方式生成的配置文件。

1

我想這一切都取決於你想要做什麼。如果你只是想綁定到特定的列,而不是自動生成基於關閉在數據源對象的屬性的列,那麼你會做到以下幾點:

<asp:GridView ID="GridViewID" AutoGenerateColumns="false" runat="server"> 
    <Columns> 
     <asp:BoundField DataField="Id" HeaderText="Id" /> 
     <asp:BoundField DataField="Name" HeaderText="Name" /> 
    </Columns> 
</asp:GridView> 

用「的AutoGenerateColumns」設置爲false,並GridView將只綁定到「DataSource」對象中屬於指定列的「DataField」屬性中標記的屬性。

現在,如果您希望更改這些數據值,或者在綁定數據時專門修改數據,那麼您會希望附加到「RowDataBound」事件。這樣,當數據被綁定時,您可以在連接到每一行時對其進行更改。

+0

不知道爲什麼有人會贊成這個:GridView!= DataGridView。 –