2017-02-16 5 views
0

콤보 상자 컨트롤에 문제가 있습니다. 항목은 데이터베이스에서 검색되지만 SelectedValue 속성을 통해 액세스 할 수 없습니다. 데이터 바인딩 된 콤보 상자에 액세스 C#

나는이처럼 설정 시도 :

DataSet ds = retrieveData(); //I am calling a procedure, it works fine 
myComboBox.DataSource = ds; 
myComboBox.DisplayMember = "COLUMN1"; 
myComboBox.ValueMember= "COLUMN2"; 

을하지만 그것은 작동하지 않을 것입니다. 작동 이제

foreach (DataRow dr in ds.Tables[0].Rows) 
    { 
     myComboBox.Items.Add(
     new { TEXT = dr["COLUMN1"].ToString(), 
       VALUE = Convert.ToInt32(dr["COLUMN2"].ToString()) 
     }); 
    } 

: 콤보 상자의 텍스트는

System.Data.DataViewManagerListItemTypeDescriptor

그래서 내가 이런 짓을했다. 하지만 인덱스 (myComboBox.IndexOf("Text inside")) 대신 값 (기본 키이므로 고유성이 보장됨)에 액세스해야합니다. SelectedValue는 항상 null이며, SelectedIndex는 익명의 객체로 어느 필드에도 접근 할 수 없습니다!

어떤 도움이 필요합니까?

+1

첫 번째 예제가 작동하지 않는 이유를 알아내는 것이 중요합니다. 두 번째 것은 바인딩 된 DataSource가 없기 때문에 SelectedValue를 사용할 수 없습니다. 또한 http://stackoverflow.com/questions/14379183/combobox-selectedvalue-throws-null-reference-exception – Steve

+0

@Steve를 참조하십시오. 그러면 상자의 텍스트가 다음과 같습니다.'System.Data.DataViewManagerListItemTypeDescriptor' – dzenesiz

답변

2

DataSet 대신 DataTable 개체로 ComboBox를 바인딩해야합니다. 개체입니다. 그것은 당신의 목적을 해결할 것입니다. 또한 DropDownStyle 속성이 DropDownList으로 설정되어 있는지 확인하십시오. 이 방법을 사용하면 입력하는 대신 목록에서 값을 선택해야합니다.

myComboBox.DataSource = ds.Tables[0]; 
+0

나를 구 했으니 까! 나는 그것이 그것 같이 작용한지 몰랐다. – dzenesiz

관련 문제