添加到Combobox并检查重复项(C#)

时间:2015-04-30 20:55:25

标签: c# winforms combobox

我想允许用户添加“类别”。

但是,在实际添加类别之前,我想确保它不重复。

这是我的代码:

//ADD CATEGORY
private void addcat_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(addcattxt.Text))
    {
        MessageBox.Show("You must enter a valid category.", 
                        "Invalid Operation: Data Missing", 
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else 
    {
        foreach (DataRowView dvrow in catcombobox.Items)
        {
            if (dvrow.ToString() == addcattxt.Text)
            {
                MessageBox.Show("This category already exists.", 
                                "Invalid Operation: Duplicate Data", 
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                break;
            }

            var query = "INSERT INTO category_table (Category) VALUES(@cat);";
            using (var sqlcmd = new SqlCommand(query, sqlconnection))
            {
                sqlcmd.Parameters.AddWithValue("@cat", this.addcattxt.Text);
                sqlcmd.ExecuteNonQuery();
            }
            this.DialogResult = DialogResult.OK;
            this.Close();  
        }
    }
}

此代码不起作用,它会添加用户输入的类别,无论其是否重复。

我还尝试了foreach循环的以下代码:

foreach (var item in catcombobox.Items),但仍无效。

如何让它发挥作用?

SOLUTION:

if (dvrow.Row["Category"].Equals(addcattxt.Text))
{
    MessageBox.Show("This category already exists.", 
                    "Invalid Operation: Duplicate Data", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

    break;
}

3 个答案:

答案 0 :(得分:3)

我认为您的代码无效,因为DataRowView.ToString()会返回对象的表示形式。你绑定的行的哪个字段?您的支票可能看起来更像:

if (dvRow.Row["Name"].Equals(addcattxt.Text)) ...

答案 1 :(得分:0)

我认为您的代码会向数据库添加重复项,因为如果您重复使用,则不会跳过该部分以将其添加到数据库中。

如果不清楚,请在您的代码中尝试:

foreach (DataRowView dvrow in catcombobox.Items)
{
    if (dvrow.ToString() == addcattxt.Text)
    {
        MessageBox.Show("This category already exists.", 
                        "Invalid Operation: Duplicate Data", 
                        MessageBoxButtons.OK, MessageBoxIcon.Error);

        break;//<----- yeah jeff right no break here to
    }
    else
    {
        var query = "INSERT INTO category_table (Category) VALUES(@cat);";
        using (var sqlcmd = new SqlCommand(query, sqlconnection))
        {
            sqlcmd.Parameters.AddWithValue("@cat", this.addcattxt.Text);
            sqlcmd.ExecuteNonQuery();
        }
    }
}

我希望能解决你的问题!祝好运! :)

答案 2 :(得分:0)

if (!catcombobox.Items.Contains(addcattxt.Text.ToString()))
{
    ms_combobox.Items.Add(addcattxt.Text.ToString());
}
else
{
    MessageBox.Show("This category already exists.", 
                    "Invalid Operation: Duplicate Data", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
}

此示例示例链接:) http://www.mediafire.com/download/zb9gp1x1096it6s/Adding_to_Combobox_and_Checking_for_Duplicates.rar