2011-09-07 70 views
0

这个问题可能已经在这里问过,但是我找不到它,所以我自己问它。C#DataGridView combobox add data programaticaly

我有一个DataGridView的应用程序。其中一列是Combobox类型。我想添加这个组合框程序的项目。下面是我使用的代码:

this.dsStatussen = this.statussenMan.getAllStatussen(); 
     DataGridViewComboBoxColumn cd = (DataGridViewComboBoxColumn)this.dgvEenheden.Columns[3]; 
     cd.DataSource = dsStatussen; 
     cd.DisplayMember = "statussen"; 
     cd.DataPropertyName = "sid"; 
     cd.ValueMember = "status"; 

然后,当我尝试添加一行我得到以下错误:“有一个名为状态无场”。由于我有荷兰语错误,我将错误转换为英语。 这里是我使用的代码添加行:

Eenheden eenhedenMan = new Eenheden(objEvenement.eid); 
     DataSet EenhedenData = eenhedenMan.getAllEenheden(); 

     foreach (DataRow dr in EenhedenData.Tables[0].Rows) 
     { 
      dgvEenheden.Rows.Add(
            dr[0].ToString(), 
            dr[1].ToString(), 
            dr[2].ToString(), 
            Convert.ToInt32(dr[6]), 
            dr[3].ToString(), 
            dr[4].ToString(), 
            dr[5].ToString() 
           ); 
     } 

有人能帮助我找出我doeing错了吗?我找不到它。这是我第一次使用带有组合框的DataGridView。

你, 伯恩哈德

+0

你真实的DataSource是什么样的?颂歌有两列(statussen和状态)? –

+0

我的数据源是一个包含一个表的数据集。该表的确有2列:sid和状态 – Bernhard

回答

1
在我的经验

我发现一切似乎更好地工作,如果你在通过绑定scource绑,然后设置

bindingScource.dataScource.Rows.Add( 
            dr[0].ToString(), 
            dr[1].ToString(), 
            dr[2].ToString(), 
            Convert.ToInt32(dr[6]), 
            dr[3].ToString(), 
            dr[4].ToString(), 
            dr[5].ToString() 
           ); 
+0

U意味着我应该直接从DataSet EenhedenData将数据绑定到DataGridView?像这样:dgvEenheden.DataSource = EenhedenData.Tables [0]; 当我这样做时,我得到了同样的错误:没有字段的名称状态“ – Bernhard

+0

好吧,我得到它的工作状态绑定的部分,所以在Combobox中,我看到了我想要的项目。 在我添加的第6列(dr [6])的数据行中有一个整数值,指示应该选择的状态的ID。我怎样才能以编程方式在组合框中选择正确的项目当我添加行? (对不起,我不能编辑第一个) – Bernhard

+0

很少的额外信息:DataGridviewCombobox中的项目是文本,数据行(dr [6])中的列是一个整数! – Bernhard

0

选择正确的行?你的意思是从下拉列表中选择以查看datagrid中的行?

int index = dropdown.SelectedIndex(); 

for(int count = 0; count < dgvEenheden.Rows.Count; count ++) 
{ 
    if (dgvEenheden.Rows[count].Cells["<enter col name here>"].Value.ToString().equals(dropdown.Items[index].Text)) 
{ 
    dgvEenheden.Rows[count].Selected = true; //to select the Row 
    dgvEenheden.Rows[count].Cells[<Cell Number>].Selected = true; //to select the specific Cell 

} 
}