2011-09-27 62 views
0

我一直保存到ComboBox中的數據列表中的一個值與下面的代碼。 我的問題是:當我將值保存到組合框中時,如何防止重複記錄?我怎樣才能做到這一點?當我將值保存到組合框時,防止重複的記錄 - C#

代碼:

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

它是WPF /的WinForms/ASP.NET組合框? – sll

回答

0

你可以先轉移你的datagridview項目到一個字典(保證唯一性),然後將該字典內容傳輸到組合框。或者您可以使用組合框上的「Contains」方法檢查自己的唯一性。你甚至可以將字典綁定到組合框,作爲組合框項目的來源。

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

使用一組:

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

通過以下檢查,然後確定是添加還是不

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 
     { 
     } 
    }