2010-07-01 32 views
2

我在那裏,我應該比被選擇來顯示不同的值,就像在這個問題上是怎麼回事一個DataGridViewComboBoxColumn:如何在DataGridViewComboBoxColumn下拉列表中顯示不同於文本框中的值?

DataGridViewComboBoxColumn name/value how?

在我的情況,我在顯示它有設備清單一個ID和一個描述。所以我綁定的數據類看起來是這樣的:

public class AURecord 
{ 
    // member vars and constructors omitted for brevity 
    public string ID { get { return _id; } } 
    public string Description { get { return _description; } } 
    public string FullDescription 
    { 
     get { return string.Format("{0} - {1}", _id, _description); } 
    } 
} 

所以我將DisplayMember和ValueMember設置是FullDescription和ID,分別。到現在爲止還挺好。

的問題是,該規定要求要顯示在下拉列表中FullDescription,但一旦做出選擇只有ID應該出現在文本框中(說明是要顯示在鄰近的讀 - 只有專欄,我也有這個工作)。我希望這個解決方案只涉及改變網格中DataGridViewComboBoxColumn對象的一些屬性,儘管我擔心答案會更多地沿着創建DataGridViewComboBoxColumn子類和做一堆重載(唉) ...

回答

2

這似乎工作:

namespace WindowsFormsApplication2 
{ 
    using System; 
    using System.Windows.Forms; 

    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      _grid.CellFormatting += new DataGridViewCellFormattingEventHandler(OnGridCellFormatting); 

      Column1.DisplayMember = "FullDescription"; 
      Column1.ValueMember = "ID"; 
      Column1.Items.Add(new AURecord("1", "First Item")); 
      Column1.Items.Add(new AURecord("2", "Second Item")); 
     } 

     void OnGridCellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      if ((e.ColumnIndex == Column1.Index) && (e.RowIndex >= 0) && (null != e.Value)) 
      { 
       e.Value = _grid.Rows[ e.RowIndex ].Cells[ e.ColumnIndex ].Value; 
      } 
     } 
    } 

    public class AURecord 
    { 
     public AURecord(string id, string description) 
     { 
      this.ID = id; 
      this.Description = description; 
     } 
     public string ID { get; private set; } 
     public string Description { get; private set; } 
     public string FullDescription 
     { 
      get { return string.Format("{0} - {1}", this.ID, this.Description); } 
     } 
    } 
} 
+0

似乎工作得很好。在選擇過程中和之後立即出現一些奇怪的行爲(完整的id加描述出現在單元格中,並且在下拉列表打開後立即出現),但是一旦焦點離開網格單元格,它就會啓動並執行我們想要的操作。我將它從我們的質量檢查中反彈出來,看看我們是否能忍受這種奇怪現象,但我懷疑它會好起來的。謝謝。 – 2010-07-15 19:57:26

相關問題