2011-09-27 21 views
0

아래 코드로 DataGridview에서 선택한 열의 값을 ComboBox에 저장했습니다. 내 질문은 : 어떻게 값을 콤보 상자에 저장할 때 중복 레코드를 방지 할 수 있습니까? 어떻게해야합니까?ComboBox에 값을 저장할 때 중복 레코드를 방지합니다 - C#

코드 : 다음과 같은 검사를 사용하여

int ColumnIndex = dgUretimListesi.CurrentCell.ColumnIndex; 

    CmbAra.Text = ""; 

    HashSet<string> set = new HashSet<string>(); 

    for (int i = 0; i < dgUretimListesi.Rows.Count; i++) 
    { 
     string s = dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString(); 
     if(!set.Contains(s)) { 
      CmbAra.Items.Add(s); 
      set.Add(s); 
     }   
    } 
+0

그것은 WPF/윈폼가 ASP.NET 콤보를 시도하세요? – sll

답변

0

당신이 먼저 DataGridView에 항목을 전송할 수 없습니다 :

int ColumnIndex = dgUretimListesi.CurrentCell.ColumnIndex;   
CmbAra.Text = ""; 

for (int i = 0; i < dgUretimListesi.Rows.Count; i++) 
{ 
    CmbAra.Items.Add(dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString()); 
} 
0

이 설정을 사용하여 (독창성을 보장하는) 사전으로 이동 한 다음 해당 사전 컨텐츠를 콤보 박스로 전송합니다. 콤보 상자에서 '포함'방법을 사용하여 고유성을 확인할 수 있습니다. 당신은 심지어 콤보 박스 항목에 대한 소스로서 콤보 상자에 사전을 묶을 수 있습니다.

Dictionary<string,bool> d = new Dictionary<string,bool>(); 
int ColumnIndex = dgUretimListesi.CurrentCell.ColumnIndex; 
CmbAra.Text = ""; 
for (int i = 0; i < dgUretimListesi.Rows.Count; i++) 
{ 
    d[dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString()] = true; 
} 
CmbAra.Items.AddRange(d.Keys); 
0

다음 추가 결정하거나

if(CmbAra.Items.Contains(dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString())) 
0

다음 코드 부분을 사용할 수 있습니다.

if(!(CmbAra.Items.Contains(dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString()))) 
{ 
    CmbAra.Items.Add(dgUretimListesi.Rows.Cells[ColumnIndex].Value.ToString()); 
} 
else 
{ 
    MessageBox.Show("Value Already exists , not added"); 
} 
1

/이

private void dgvServerList_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
    { 
     try 
     { 
      if (e.ColumnIndex == 1) 
      { 
       string id = dgvServerList[e.ColumnIndex, e.RowIndex].Value.ToString(); 
       int duplicaterow = 0; 

       for (int row = 0; row < dgvServerList.Rows.Count; row++) 
       { 
        if (row != e.RowIndex && id == dgvServerList[e.ColumnIndex, row].Value.ToString()) 
        { 
         duplicaterow = row + 1; 
         MessageBox.Show("Duplicate found in the row: " + duplicaterow); 
         this.dgvServerList[e.ColumnIndex, e.RowIndex].Value = ""; 
         break; 
        } 
       } 
      } 
     } 
     catch 
     { 
     } 
    } 
관련 문제