我有两个组合框,名称分别是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 组合框会显示带有先前选定项目的项目。它的平均 cmbItemName 组合框重复值。你能告诉我如何在不重复项目名称的情况下显示项目名称。我想根据 invoiceNo 显示项目名称。当 invoiceNo 更改时,所有项目显示是另一个没有 prevoice 值或重复的组合框。谢谢你。请告诉我如何避免这个问题。