我现在做一个系统,很多地方用到相同的二个下拉框ComboBox,二个列表是联动的,但也有一些地方只用到它们其中的一个,即:选择大类商品,第二个列表框是小类商品,有时只用大类商品,有时只用到小类商品考虑到能多次使用,我现在的做法是:做二个各自独立自定义控件,都继承于ComboBox,只要用到的地方,拖出来就可以了。可现在问题是:第一个大类商品很好写,可是第二个小类商品我不知道怎么让他们联动起来,就是说,我选大类商品后,小类商品能显示出对应的小类商品。

解决方案 »

  1.   

    这个有很多方法啊,首先你小类商品应该是存在数据库当中的,当你选择了大类商品,时候在Combox中Value值对应大类的ID,然后你选择了项去的ID,然后去查询,把查询的结果集绑定到第二个上就可以,你也可以用数组实现这种功能
      

  2.   

    在大类商品控件的SelectedIndexChanged或者TextChanged事件里,把小类商品clear了,再填数据进去不就得了。比如你大类选了电脑,那么你就从数据库中查出select * from 表 where 大类='电脑',然后一条一条填到小类的ComboBox里。
      

  3.   

    添加item的时候用第一个大类的ID当筛选条件啊
      

  4.   

    当然你要对第一个Combox的事件做下处理,当选择项改变时候要出发查询方法,刷新结果集,之后重新绑定第二个列表
      

  5.   

    你在form上拖两个comboBox,分别是comboBox1,comboBox2看看效果:
    public Form1()
    {
        InitializeComponent();
        this.Load+=new EventHandler(Form1_Load);
        comboBox1.SelectedIndexChanged+=new EventHandler(comboBox1_SelectedIndexChanged);
    }
    protected void comboBox1_SelectedIndexChanged(object sender,EventArgs e)
    {
        if (comboBox1.SelectedIndex == 0)
        {
            comboBox2.Items.Clear();
            comboBox2.Items.Add("sss2");
            comboBox2.Items.Add("sss2");
            comboBox2.Items.Add("sss2");
        }
        if (comboBox1.SelectedIndex == 1)
        {
            comboBox2.Items.Clear();
            comboBox2.Items.Add("aaa2");
            comboBox2.Items.Add("aaa2");
            comboBox2.Items.Add("aaa2");
        }
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        comboBox1.Items.Add("sss1");
        comboBox1.Items.Add("sss1");
        comboBox2.Items.Add("sss1");
    }
      

  6.   

        //小类
        public class Small : ComboBox
        {    }    //大类
        public class Big : ComboBox
        {
            private Small _small = null;        public Small Small
            {
                get
                {
                    return _small;
                }
                set
                {
                    _small = value;
                }
            }        protected override void OnSelectedIndexChanged( EventArgs e )
            {
                if ( _small != null )
                {
                    //加上你要重新加载小类数据的代码
                }
                base.OnSelectedIndexChanged( e );
            }
        }
      

  7.   

    在大类商品控件的SelectedIndexChanged时间中控制小类商品控件中的值就行了
      

  8.   

    用个 DataSet, 父子表建立一个 DataRelation,第一个下拉绑定 父表为数据源
    .DataSource = ds;
    .DataMember = "pTableName";第二个下拉绑定那个 relation 为数据源
    .DataSource = ds;
    .DataMember = "relationname";