我在做小程序时遇到一个非常怪的问题,希望高手解惑!!!!感激不尽
问题:有两个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内容已经变了
问题:有两个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内容已经变了
==
绑定新数据源前先清空
comboBox2.DataSource = temp;
相当于给它重新绑定一下数据源
如果comboBox2.DataSource以追加的方式为comboBox2赋值的话,为什么我的comboBox2的内容始终是第一次赋的(比如第一次是string1对应的1,2,那么后面一直是1,2并没有添加多的数据)
回复 WaterMM:
感觉你是GG,呵呵
我的comboBox2不是相当于每次都把DataSource修改了吗,为什么还要加个DataSource = null呢
感觉你们两个合起来一定能给我个详细的解释,两位大哥,小弟在此有礼了,求详细解释DataSource和绑定的函义
comboBox2的内容始终是第一次赋的是因为你没有呈现,那他的DataSource却始终在增加这也可以解释为什么你每次都把DataSource修改了,还是不行的问题
我用调试时显示DataSource的内容只是改变并没有增加啊
还有怎么样用代码让comboBox2的内容呈现啊?
我看了一下comboBox2没有类似的方法,也没有DataBind()方法啊
你的事件处理方法写在comboBox1_SelectedIndexChanged 这里面,意思就是当combobox值改变后触发,你还应该将他的一个属性设置为自动回发到服务器,不然服务器怎么知道你的值改变了