2011-09-07 7 views
0

이 질문은 이미 올린 질문 일지 모르지만 찾을 수 없으므로 직접 물어 봅니다.C# DataGridView 콤보 상자 데이터 추가 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

실제 데이터 소스는 어떤 모양입니까? Odes에는 두 개의 열 (statussen 및 status)이 있습니까? –

+0

내 데이터 소스는 하나의 테이블이있는 데이터 세트입니다. 이 테이블에는 실제로 두 개의 열이 있습니다. 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

좋아요, 나는 상태 센스가 바인드되는 부분에 대해 작업하게했습니다. 그래서 콤보 박스에서는 원하는 항목을 봅니다. 필자는 column 6 (dr [6])을 추가해야하는 datarow에 선택해야하는 상태의 ID를 나타내는 정수 값이 있습니다. 어떻게 콤보 상자에서 올바른 항목을 프로그래밍 방식으로 선택할 수 있습니까? (이중 코멘트는 죄송하지만 처음에는 편집 할 수 없습니다.) – Bernhard

+0

약간의 추가 정보 : DataGridviewCombobox의 항목은 텍스트이고 datarow (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 

} 
}