从组合框2中删除组合框1中的选定项目.(组合框是从数据库绑定的.)
本文关键字:组合 数据库 绑定 项目 删除 | 更新日期: 2023-09-27 18:24:28
我有两个名为cBTeam1
和cBTeam2
(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个组合框,并绑定相同的数据源。当我选择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();
}