2011-09-07 69 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 

} 
}