2011-09-05 119 views
1

我正在使用datagridviewcomboboxcell顯示值。我希望這個單元格的值是int。但是:當我打開組合框時,我希望看到組合框中每個項目的描述。當我選擇一個值時,這個值會改變(組合框被關閉),而可見值只是int。有沒有人有想法如何做到這一點?datagridview中的c#組合框

喜歡:選擇的項目:2

擴展組合框:0 - 烯 1 - 由於 2 - 日科 3 - 假 感謝您的幫助。

+0

你很可能需要設置DataTextField和DataValueField屬性。 –

+0

我不明白。 WHERE在datagridviewcomboboxcell類不是textfieldcelll – santBart

+0

這是一個WinForm或WebForm(ASP.NET)項目? –

回答

1

即使你會找到一種設置TextField和ValueField的方法,我嚴重懷疑當控件顯示下拉列表(數字和文本)時,會有不同的文本呈現,並且它已摺疊並僅顯示爲下拉列表關閉(僅限數量)。

你問的東西當然有意義,但是你不會爲了設置幾個屬性而毫不費力地運行它。

在Windows處理這種形式,你應該攔截事件:EditingControlShowing,並在那裏,對於組合框,指定自定義值的控制,這裏是一個起點:

void dataGridView1_EditingControlShowing(object sender, 
      DataGridViewEditingControlShowingEventArgs e) 
     { 
      if (e.Control is ComboBox) 
      { 
       ComboBox cmb = e.Control as ComboBox; 

       // here you can work on the ComboBox... 
      } 
     } 

以瞭解詳情這裏:DataGridView.EditingControlShowing Event

+0

嗯。也許我誤解了這個問題。我的回答不起作用,如果這是他想要做的... –

+1

她。感謝幫助;) – santBart

0

您需要將ValueMember屬性設置爲您的對象中的任何屬性都是「id」。要設置可見文本,請將屬性設置爲DisplayMember屬性。如果此數據網格綁定到數據庫記錄或某種類型,則上面提到的屬性應該是要綁定的表字段的名稱。

+0

valuemember和displaymember的addit如何對items.add方法進行覈對? – santBart

+0

假設您綁定了一個對象列表,烘焙到DataGridView中的代碼將搜索對象中與您附加到上述屬性的名稱匹配的屬性名稱。 –