listBox绑定到DataSet问题
我用一个listBox1绑定到DataSet,用下面的办法
listBox1.DataSource = ds1.Tables[0];
listBox1.DisplayMember = ds1.Tables[0].Columns[1].ToString();
listBox1.ValueMember = ds1.Tables[0].Columns[1].ToString();
然后我用一个按钮把listBox1里的数值全部复制到listBox2里,按钮事件代码是:
this.listBox2.Items.Clear();
for (int i = 0; i < this.listBox1.Items.Count; i++)
{
this.listBox2.Items.Add(this.listBox1.Items[i]);
}
但复制过去的是数值变成了System.Data.DataRowView
我记得listBox绑定到SqlDataReader,用这个办法是可以的,但绑定到DataSet为什么就不行了呢.请高手告诉我按钮事件应该怎么写.谢谢了
------解决方案--------------------这样写:
Object s = this.listBox1.Items[i];
this.listBox2.Items.Add(this.listBox1.GetItemText(s));
------解决方案--------------------this.listBox2.Items.Add(this.listBox1.Items[i].ToString());
------解决方案--------------------在ListBox绑定数据源后,它只是把数据行加到了ListBox.Items,为了显示内容及可以取到选中的值,所以才设置了DisplayMember 及ValueMember,如果对一个ListBox进行Items的复制,少了这两个属性,ListBox就不知道要显示什么了,只能调用Items中的每一个Item的默认的ToString()来显示,因为Item是DataRowView类型的,DataRowView类型的ToString就是返回DataRowView,所以才出现了你看到的现象.
------解决方案--------------------this.listBox2.Items.Add(this.listBox1.Items[i].ToString());
LS正确