从数据库刷新值到Combobox而不添加两次相同的值

时间:2018-03-19 11:51:08

标签: c# sql-server

因此,我可以从我的数据库中将某些列(客户姓氏和名字)中的值输入到我的mainform中的组合框中,并且在使用LoadEvent打开表单时已经加载了它。但是我有另一种形式,我在同一个表上插入另一行(客户名称,fname,电话等),我的列在主窗体上显示。所以我决定在我的mainform上放一个按钮,当我使用另一个表单添加客户时,我可以刷新我的组合框的内容。问题是,当我按下按钮进行刷新时,它只会创建组合框中已有的副本以及刚刚添加的另一个副本。请帮忙。

我的代码:

SqlConnection con = new SqlConnection("Data Source=DESKTOP-39SPLT0;Initial Catalog=SalesandInventory;Integrated Security=True");
            con.Open();
            SqlCommand cmd1 = new SqlCommand("select clName, cName from tblCustomer", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd1);

            DataSet ds = new DataSet();

            sda.Fill(ds);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {

                comboBox1.Items.Add(ds.Tables[0].Rows[i][0] + ", " + ds.Tables[0].Rows[i][1]);

            }
            con.Close();

2 个答案:

答案 0 :(得分:1)

您只需使用此代码:

comboBox1.DataSource = ds.Tables[0];
comboBox1.ValueMember = "clName";
comboBox1.DisplayMember = "cName";

答案 1 :(得分:0)

好吧,我觉得很傻,但多亏了mjwills和鼹鼠。

private void btnReset_Click(object sender, EventArgs e){
comboBox1.Items.Clear();
CustomerInfo();
}

void CustomerInfo()
{
SqlConnection con = new SqlConnection("Data Source=DESKTOP-39SPLT0;Initial Catalog=SalesandInventory;Integrated Security=True");
            con.Open();
            SqlCommand cmd1 = new SqlCommand("select clName, cName from tblCustomer", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd1);

            DataSet ds = new DataSet();

            sda.Fill(ds);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {

                comboBox1.Items.Add(ds.Tables[0].Rows[i][0] + ", " + ds.Tables[0].Rows[i][1]);

            }
            con.Close();
}