【问题标题】:Prevent Combobox values repeating When select Items form another combobox当从另一个组合框中选择项目时,防止组合框值重复
【发布时间】:2021-02-03 15:42:21
【问题描述】:

我有两个组合框,名称分别为 cmbInvoiceNocmbItemName。我使用以下代码将所有发票号码发送到 cmbInvoiceNo。

// Get data from database to the **cmbInvoiceNo** combobox
    private void GetInvoiceNo()
    {
        using (SqlConnection con = new SqlConnection(CS))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("Select InvoiceNo From tblInvoice GROUP BY InvoiceNo", con);
            SqlDataReader dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                string invoiceNo = dr.GetString(0);
                cmbInvoiceNo.Items.Add(invoiceNo);
            }
        }
    }

之后,当我更改 cmbInvoiceNo 组合框中的发票编号时,我的另一个组合框 (cmbItemName) 根据 InvoiceNo 显示项目名称。我将它设置为cmbInvoiceNo_SelectedIndexChanged 像这样的事件。

private void cmbInvoiceNo_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cmbInvoiceNo.SelectedIndex == 0)
        {
            ClearAllFields();
        }

        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("SELECT ItemName from tblInvoice where InvoiceNo = '" + cmbInvoiceNo.Text + "'", con);
            con.Open();
            cmd.ExecuteNonQuery();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string itemName = (string)dr["ItemName"].ToString();
                cmbItemNames.Items.Add(itemName);                 
            }
        }
    }

它也按预期工作。但我的问题是在选择了一个发票编号后,我将所有项目名称都放入 cmbItemName 组合框中。当我选择另一个发票编号时,我的 cmbItemName 组合框会显示带有先前选定项目的项目。它的平均 cmbItemName 组合框重复值。你能告诉我如何在不重复项目名称的情况下显示项目名称。我想根据 invoiceNo 显示项目名称。当 invoiceNo 更改时,所有项目显示是另一个没有 prevoice 值或重复的组合框。谢谢你。请告诉我如何避免这个问题。

【问题讨论】:

    标签: c# sql-server-2017-express


    【解决方案1】:

    好像

    cmbItemNames.Items.Clear();
    

    在添加项目之前是这里的解决方案

    【讨论】:

      【解决方案2】:

      不应该选择索引==-1吗?没有选定的行。

      【讨论】:

      • 你能把完整的代码发给我吗?你的答案对我来说不是很清楚。
      • 您可以在添加新项目之前先清除 cmbItemNames 中的所有项目吗?
      • @NataliaMuray 。不知道该怎么做。可以发给我代码吗。当我第二次选择项目时,我的第二个组合框值是用新值和以前的值重复。那是问题
      • @NataliaMuray 谢谢你变化很大。在我使用 clear() 发送它后,它按预期工作;再次感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多