从组合框2中删除组合框1中的选定项目.(组合框是从数据库绑定的.)

本文关键字:组合 数据库 绑定 项目 删除 | 更新日期: 2023-09-27 18:24:28

我有两个名为cBTeam1cBTeam2(winForm&C#)的组合框,它们都是从同一个数据库表绑定的。

如果一个人从cBTeam1中选择了一个团队,我希望这个选择的团队不会显示在cBTeam2中。

     private void bindComboBox()
    {
       if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            string queryTeam1 = "SELECT * FROM Teams ORDER BY Team_name";
            SqlCommand cmd = new SqlCommand(queryTeam1, con);
            adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds, "Teams");
            this.cBoxTeam1.SelectedIndexChanged -= new EventHandler(this.cBoxTeam1_SelectedIndexChanged);
            cBoxTeam1.DataSource = ds.Tables["Teams"];
            //if(cBoxTeam1.SelectedIndex

            cBoxTeam1.DisplayMember = "Team_name";
            cBoxTeam1.SelectedIndex = -1;
            cBoxTeam1.ValueMember = "team_id";
            this.cBoxTeam1.SelectedIndexChanged += new EventHandler(this.cBoxTeam1_SelectedIndexChanged);
   }  

这是cBoxTeam2事件处理程序cBoxTeam2_SelectedIndexChanged 的代码

    private void cBoxTeam2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cBoxTeam1.SelectedIndex == cBoxTeam2.SelectedIndex)
        {
            MessageBox.Show("You already selected " + cBoxTeam2.Text);
        }

        team2_id = Int32.Parse(cBoxTeam2.SelectedValue.ToString());
    }

例如,cBoxTeam1显示3个值,即英格兰、印度、澳大利亚。如果我选择印度,选择后印度将不会显示在cBoxTeam2组合框中

从组合框2中删除组合框1中的选定项目.(组合框是从数据库绑定的.)

嘿,我给你做了样品。示例有2个组合框,并绑定相同的数据源。当我选择combobox1时,首先用列表检查是否存在除匹配项外的绑定combobox 2

 protected List<string> lst
    {
        get
        {
            List<string> lst =
                new List<string>();
            lst.Add("1");
            lst.Add("2");
            lst.Add("3");
            return lst;
        }
    }
   private void Form1_Load(object sender, EventArgs e)
    {            
        comboBox1.DataSource = lst;
        comboBox2.DataSource = lst;
    }
   private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lst.Contains(comboBox1.SelectedItem.ToString()))
        {
            comboBox2.DataSource = lst.Select(q => q.ToString(CultureInfo.InvariantCulture)).Where(q => q.ToString() != comboBox1.SelectedItem).ToList();
        }
    }

试试这个

    public void loadcBTeam1()
    {
       ....
       string queryTeam1 = "SELECT Team_name FROM Teams  where Team_name <> '" + yourComboBox2.text + "' ORDER BY Team_name";
     ......
    }

和您的ComboBox2 TextChanged

   private void comboBox2_TextChanged(object sender, EventArgs e)
    {
        loadcBTeam1();
    }