2010-06-12 45 views
7

在我的Windows Mobile .NET應用程序中,我有一個簡單的對象數組,其中包含要顯示在我的DataGrid中的數據。要做到這一點,我只需撥打:數組作爲DataGrid的DataSource:如何自定義列?

myDataGrid.DataSource = myArray;

這工作,但我有它的問題:它使用的所有屬性爲列,並使用該屬性的列標題的名稱。我無法弄清楚如何定製兩件事情:

  • 選擇哪些屬性的子集,應該說,我有一個ID,名稱和值屬性,我只想要顯示名稱顯示爲列(和值);

  • 重命名列標題更有意義(例如,如果該屬性被稱爲ID顯示列標題說「數字」)。

這可能嗎?

如上所述,這是在Windows Mobile .NET(版本2)應用程序中。

回答

1

您需要設置Datagrid.TableStyles屬性來自定義佈局。對結合到對象的數組這裏

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.tablestyles.aspx

更多細節: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname(VS.71).aspx

向該 System.Windows.Forms.DataGrid綁定到對象的 強類型陣列,所述 對象必須包含公共屬性。 若要創建 顯示此類數組的DataGridTableStyle,請將 MappingName屬性設置爲classname [] ,其中classname由 類名取代。還要注意 MappingName屬性是 區分大小寫。

+0

我在之前已經發現了這些,但是我不太清楚如何將它們作爲DataSource使用。我能找到的唯一信息是與DataTable一起使用。 – pbean 2010-06-12 12:56:45

+0

啊這個工程。一個很好的例子是:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname.aspx – pbean 2010-06-12 13:05:00

+1

@pbean - 很高興聽到它的作品! – code4life 2010-06-12 13:08:50

0

我不知道你是否事先知道列的名字?但是如果是這樣的話,你可以進入DataGridView的「Edit Columns」,並在那裏創建你的列。在「數據」類別中,將「DataPropertyName」從「(none)」更改爲類屬性的名稱。從那裏你可以定製名稱,如果它是可見的,大小等等。DataGrid將它綁定到你的數據源。

此外,還有一個屬性「DataGridView.AutoGenerateColumns」,您可以將其設置爲false,因此您不必綁定對象的所有屬性。我也是這樣做的。

+0

不幸的是,它不是關於DataGridView,而是關於DataGrid(前任),我無法像設計時間那樣編輯列,就像我可以在「普通」(Windows)窗體上使用DataGridView一樣。 – pbean 2010-06-12 13:06:23

+0

所以,你必須通過tablestyles手工完成它:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle(v=VS.100).aspx 但是我假設你可以從DataGrid繼承並創建自己的屬性映射到tableStyles,以便可以使用設計器。但如果你的意圖是爲一張桌子做那個,那可能不值得。 – Sauleil 2010-06-12 13:48:15

0

在這段代碼中,_im是表格的一個對象,並且在綁定後,我將這個對象與DataGridView dgvItem綁定,根據需要更改dgvItem的標題文本。

dgvItem.Rows.Clear(); 
    dgvItem.DataSource = _im ; 
    dgvItem.Columns[2].HeaderText = "Mobile Code"; 
    dgvItem.Columns[3].HeaderText = "Mobile Name";