2012-01-03 4 views
3

하나의 콤보 박스 열이있는 datagridview가 있습니다. 콤보 상자 열을 채 웁니다. 언제 내가 루프에 대한 데이터를 읽을 때 가치를 얻을 필요가 콤보 상자에서 텍스트를 선택합니다.Datagridive DataGridViewComboBoxColumn 값 멤버를 선택

dgFilter 여기 여기 DataGridView를

  DataGridViewComboBoxColumn dgcoSpec = new DataGridViewComboBoxColumn(); 
      dgcoSpec = new DataGridViewComboBoxColumn(); 
      dgcoSpec.DataSource = loadOperators(); 
      dgcoSpec.DisplayMember = "Operatortxt"; 
      dgcoSpec.ValueMember = "Operatorvalue"; 
      dgcoSpec.AutoComplete = true; 
      dgcoSpec.HeaderText = "Operators"; 
      dgcoSpec.Name = "Operators"; 
      dgcoSpec.DefaultCellStyle.NullValue = "--Select--"; 
      dgcoSpec.Width = 130; 
      dgFilter.Columns.Insert(1, dgcoSpec); 

콤보 열

for (int i = 0; i <= dgFilter.Rows.Count - 1; i++) 
{ 
    strOperator = dgFilter.Rows[i].Cells[1].Value.ToString().Trim(); 
} 

에서 내가 데이터를 읽을 이런 식으로하지만 문제는 내가 아니라 내가 디스플레이 멤버를 받고 오전 combox 값 회원을받지하고있다. for 루프에서 value 멤버를 추출하는 방법. 코드로 나를 안내 해주십시오. 감사

답변

1

값 부재 DataGridViewComboboxCell 안에 표시되는 문자열이다.

실제 Combobox 컨트롤은 사용자가 셀을 편집하는 기간에만 존재합니다.

당신이 DataGridViewComboboxCell 항목의 목록에서 값의 인덱스를 취득하고자하는 것을 의미하는 경우,이 값의 인덱스 조회 할 수 있습니다 :이 예에서

for (int i = 0; i <= dgFilter.Rows.Count - 1; i++) 
{ 
    var cell = dgFilter.Rows[i].Cells[1] as DataGridViewComboboxCell; 
    int index = cell == null || cell.Value == null ? -1 : cell.Items.IndexOf(cell.Value); 
    Console.WriteLine(index); 
} 

을, 나는 -1를 사용하고 값이 잘못되었습니다.

수정 방금 ​​DataSource을 사용하고있는 것으로 나타났습니다. 가능한 복제본은 DataGridViewComboBoxColumn name/value how?을 참조하십시오.