防止重复记录,当我保存值到组合框- c#

本文关键字:组合 保存 记录 | 更新日期: 2023-09-27 18:09:53

我一直保存到组合框的值在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());
}

防止重复记录,当我保存值到组合框- c#

请尝试一下

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

您可以首先将您的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);

使用set:

    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);
        }           
    }

使用以下检查,然后确定是否添加

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

可以使用以下代码部分:

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");
}