我有两个名称为cmbInvoiceNo
和cmbItemName
的组合框。我使用以下代码将所有发票号码获取到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 combox框显示了与以前选择的项目的项目。它的平均cmbItemName组合框重复值。你能告诉我如何显示项目名称而不重复项目名称吗?我想根据invoiceNo显示商品名称。当invoiceNo更改所有项目时,显示的是另一个没有前置值或重复的组合框。谢谢你!请告诉我如何避免这个问题。
似乎
cmbItemNames.Items.Clear();
在添加项之前是这里的解决方案
不应该是selectesindex ==-1吗?