From: John on 26 May 2006 00:32 Hi, I have set a DataGridViewComboBoxColumn for a complex object type, and set the DisplayMember and ValueMember to members of the object type. My problem is how to programmatically set the cell value. The objects live in the DataGridViewComboBoxColumn.Items, but there is no way of getting an object out based on, e.g. display value. Here's the type : private class complexObj { public string id_string; public int id; public complexObj(string Id_string, int Id) { id_string = Id_string; id = Id; } public String ShowVal { get { return id_string; } set { id_string = value; } } public complexObj Self { get { return this; } } } here's the code that fills the pulldown list and attempts to fill the grid... private void Form1_Load(object sender, EventArgs e) { (grid.Columns["Column2"] as DataGridViewComboBoxColumn).ValueMember = "Self"; (grid.Columns["Column2"] as DataGridViewComboBoxColumn).DisplayMember = "ShowVal"; complexObj mi = new complexObj("One", 1); (grid.Columns["Column2"] as DataGridViewComboBoxColumn).Items.Add(mi); mi = new complexObj("Two", 2); (grid.Columns["Column2"] as DataGridViewComboBoxColumn).Items.Add(mi); mi = new complexObj("Three", 3); (grid.Columns["Column2"] as DataGridViewComboBoxColumn).Items.Add(mi); int pos = grid.Rows.Add(); grid.Rows[pos].Cells["Column1"].Value = "First line"; grid.Rows[pos].Cells["Column2"].Value = "One"; // doesn't work, woudl like to assign straight out of // (grid.Columns["Column2"] as DataGridViewComboBoxColumn).Items pos = grid.Rows.Add(); grid.Rows[pos].Cells["Column1"].Value = "Second line"; grid.Rows[pos].Cells["Column2"].Value = "Two"; // doesn't work pos = grid.Rows.Add(); grid.Rows[pos].Cells["Column1"].Value = "Third line"; grid.Rows[pos].Cells["Column2"].Value = "Three"; // doesn't work } -- "I have nothing but the greatest respect for other peoples' crackpot beliefs". -- Sam the Eagle.
|
Pages: 1 Prev: ContextSwitchDeadlock Next: Insert an Image to a dataGridView column |