I want to bind the following class as a collection of objects to a datagridview with one column as combobox.
public class GridClass
{
[DisplayName("ID")]
public string Id { get; set; }
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Gender")]
public List
public GridClass(string val)
{
Id = val;
FirstName = "FirstName" + val;
LastName = "LastName" + val;
Gender = new List
Gender.Add("MALE" + val);
Gender.Add("FEMALE" + val);
}
}
I created a datagridview called datagridview1.
Created 5 object of gridclass as follows
BindingList
for (int i = 1; i <= 5; i++)
{
GridClass g = new GridClass(i.ToString());
BindList.Add(g);
}
I binded to datagridview.
dataGridView1.DataSource = BindList;
But it is displaying only 3 columns ID, First Name and LastName.
I want to display Gender in combobox with each row will have different set of values.
Kindly reply for this post.
Thanks in advance
brunda kPosted Apr 9, 2012, 4:57 AM
BindingList BindList = new BindingList();
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if ((row.Cells[1] as DataGridViewTextBoxCell).Value != null)
{
foreach (GridClass gc in BindList)
{
if (gc.FirstName.ToString() == (row.Cells[1] as DataGridViewTextBoxCell).Value.ToString())
{
(row.Cells[3] as DataGridViewComboBoxCell).Items.Clear();
(row.Cells[3] as DataGridViewComboBoxCell).Items.Add(gc.Gender[0].ToString());
(row.Cells[3] as DataGridViewComboBoxCell).Items.Add(gc.Gender[1].ToString());
break;
}
}
}
}
}
public Form1()
{
//private DataGridView dgv;
InitializeComponent();
this.dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();
comboboxColumn.DataPropertyName = "Gender";
comboboxColumn.HeaderText = "Gender";
dataGridView1.Columns.Insert(0, comboboxColumn);
for (int i = 1; i <= 5; i++)
{
GridClass g = new GridClass(i.ToString());
BindList.Add(g);
}
dataGridView1.DataSource = BindList;
dataGridView1.BindingContext = new BindingContext();
}