2010-05-16 2 views
1

나는 combobox1 및 combobox2라는 양식 (form1)에 2 개의 콤보 상자가 있습니다. C# : 두 개의 다른 콤보 박스를 채우기 위해 하나의 데이터 테이블 사용?

각 콤보

는 SQL Server 2005의 2 개 개의 다른 테이블에 저장된 데이터로 채워해야한다 : 표 1 및 표 2

가 내 말 : 콤보 상자를 -> 표 combobox2 -> 표 2

내가 채울 데이터 테이블 적절한 데이터를 작성한 다음 콤보 상자를 별도로 바인딩하십시오.

내 문제는 : 2 콤보를 채운 후 두 테이블 모두 동일한 데이터를 가지고 있습니다.

 DataTable tb1 = new DataTable(); 

     //Filling tb1 with data got from table1 
     combobox1.Items.Clear(); 
     combobox1.DataSource = tb1; 
     combobox1.DisplayMember = "Name"; 
     combobox1.ValueMember = "ID"; 
     combobox1.SelectedIndex = -1; 

     //filling tb1 with data got from table2 
     combobox2.Items.Clear(); 
     combobox2.DataSource = tb1; 
     combobox2.DisplayMember = "Name"; 
     combobox2.ValueMember = "ID"; 
     combobox2.SelectedIndex = -1; 

문제점은 무엇입니까 :

이 내 코드?

2 개의 다른 데이터 테이블 (tb1 및 tb2)을 얻으면 모든 것이 올바르게 수행 될 것입니다.

의견을 보내주십시오.

답변

1

DataTable의()에 2 개의 분리 DataView 년대를 작성하고, DataView를 각 콤보 상자를 바인딩 감사 ,.

2

DataTableDataView Class 당신이 컨트롤의 데이터 소스에 TB1를 할당 할 때, 당신은 실제로 DataSource에 메모리에 대한 참조/링크를 할당하는 것을 의미 참조 형식입니다 참조하십시오. 따라서 tb1 변수를 수정하면 참조 자체가 변경됩니다. 참조 만 변경하기 때문에 DataSource은 여전히 ​​동일한 DataTable을보고 있으며 이제는 다른 데이터 집합을 갖습니다.

+0

괜찮습니까? 그럼 2 개의 콤보를 채우는 데 2 ​​개의 다른 데이터 테이블이 있어야한다고 생각하십니까? – odiseh

+1

비슷한 데이터가 있다면 미치의 대답이 더 좋을 것입니다. 두 개의 전혀 다른 DataTable을 다시 가져 오는 경우 두 개의 DataTable을 선언하십시오. – GenericTypeTea

+0

감사합니다.하지만 위의 내용이 문자열을 사용할 때 왜 정확하지 않은지 설명합니다. 우리가 알다시피, string은 참조 형입니다. 문자열 s = "hello"; textbox1.Text = s; s = "세계"; textbox2.Text = s; 위의 코드 스 니펫에서 textbox1.Text의 값은 "hello"이고 textbox2.Text의 값은 "world"입니다. 권리? – odiseh

관련 문제