2009-06-23 31 views
2

我有一個DataGridViewComboBoxCell,它的DataSource是一個List。 當從列表中選擇一個項目時,我希望存儲項目的索引,而不是項目本身,以便我可以切換DataSources並仍顯示關聯列表條目。爲DataGridViewComboBoxCell中的選定條目選擇ListIndex而不是Object

例如我有一個月的清單(1月 - 12月)。我想選擇「April」並在單元格中存儲「3」(但仍然顯示「April」作爲選定的值)。然後,我決定以波蘭語顯示所有月份值,更改數據源,並且「4」的值現在顯示「kwiecień」。

我已經看過DisplayMembers和ValueMembers以及GetFormattedValue和GetEditedFormattedValue等函數,但我無法制作它的頭部或尾部。它大部分似乎被設計用於數據庫數據,這不是我在這裏使用的。

有人可以通過洞察告訴我最好的調用來覆蓋,以獲得我正在尋找的行爲?

+0

在你的第二段中的例子中,我認爲你得到了四月和五月的混合。另外,你正在使用哪種.net語言? – CoderDennis 2009-06-26 16:41:53

回答

0

我最終最終使我的數據對象實現了iBindingList接口,如another question I asked中所述,並覆蓋了我的DataGridViewCell的GetValue和SetValue方法。
坦率地說,過去一週左右的大部分困難來自於我無法重寫DataGridViewCell的Value屬性。發現我可以重寫這些方法而不是屬性,並獲得相同的結果,這是天賜之物。

0

嘗試使用DataGridView的編輯控件屬性。這應該讓你訪問組合框的屬性。

這是一個簡單的例子。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     // Cast the editing control as a ComboBox to get to the selected index property 
     ComboBox cb = dataGridView1.EditingControl as ComboBox; 
     if (cb != null) 
     { 
      int selectedIndex = cb.SelectedIndex; 
     } 
    } 
1

你不應該重寫任何東西來完成這項工作。

創建一個有兩個屬性IDMonthName的類,並將該類的實例存儲在您的列表中。然後設置ValueMember = "ID"DisplayMember = "MonthName"應該工作。

我可以舉一個例子。你使用C#還是VB.NET?

相關問題