我在做小程序时遇到一个非常怪的问题,希望高手解惑!!!!感激不尽
   问题:有两个combox,小程序要实现其中一个的text改变后,另一个combox的DataSource相应的改变
   程序运行后,发现当主combox的text改变后,从combox的DataSource并没有改变
    
        private List<string> temp = new List<string>();
        private string[] str = { "string1", "string2", "string3", "string4" };
        private string[] str1 = { "1", "2" };
        private string[] str2 = { "3", "4" };
        private string[] str3 = { "5", "6" };
        private string[] str4 = { "7", "8" };
        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);
            comboBox1.DataSource = str;
        }        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
                temp.Clear();
                if (comboBox1.Text.Equals("string1"))
                {
                    for (int i = 0; i < str1.Length; i++)
                    {
                        temp.Add(str1[i]);
                    }
                }
                if (comboBox1.Text.Equals("string2"))
                {
                    for (int i = 0; i < str1.Length; i++)
                    {
                        temp.Add(str2[i]);
                    }
                }
                if (comboBox1.Text.Equals("string3"))
                {
                    for (int i = 0; i < str1.Length; i++)
                    {
                        temp.Add(str3[i]);
                    }
                }
                if (comboBox1.Text.Equals("string4"))
                {
                    for (int i = 0; i < str1.Length; i++)
                    {
                        temp.Add(str4[i]);
                    }
                }
                //comboBox2.DataSource = null;
                comboBox2.DataSource = temp;
            }
   请高手注意comboBox2.DataSource = null这行代码,这是我请教别人给出的答案,但我并不明白为什么,因为我调试的时候发现datasource内容已经变了

解决方案 »

  1.   

    comboBox2.DataSource = null
    ==
    绑定新数据源前先清空
      

  2.   

            //comboBox2.DataSource = null;
                    comboBox2.DataSource = temp;
    相当于给它重新绑定一下数据源
      

  3.   

     //comboBox2.DataSource = null将上一个数据源清空,如不清空,会以追加的方式为comboBox2赋值
      

  4.   

    回复“先请而候教”兄弟:
    如果comboBox2.DataSource以追加的方式为comboBox2赋值的话,为什么我的comboBox2的内容始终是第一次赋的(比如第一次是string1对应的1,2,那么后面一直是1,2并没有添加多的数据)
    回复 WaterMM:
    感觉你是GG,呵呵
    我的comboBox2不是相当于每次都把DataSource修改了吗,为什么还要加个DataSource = null呢
      感觉你们两个合起来一定能给我个详细的解释,两位大哥,小弟在此有礼了,求详细解释DataSource和绑定的函义
      

  5.   

    你加个comboBox2.DataBind()看看
    comboBox2的内容始终是第一次赋的是因为你没有呈现,那他的DataSource却始终在增加这也可以解释为什么你每次都把DataSource修改了,还是不行的问题
      

  6.   

    回复“先请而后教”兄弟:
        我用调试时显示DataSource的内容只是改变并没有增加啊
        还有怎么样用代码让comboBox2的内容呈现啊?
        我看了一下comboBox2没有类似的方法,也没有DataBind()方法啊
      

  7.   


    你的事件处理方法写在comboBox1_SelectedIndexChanged  这里面,意思就是当combobox值改变后触发,你还应该将他的一个属性设置为自动回发到服务器,不然服务器怎么知道你的值改变了