private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//labelSelectedValue.Text = listBox1.SelectedValue.ToString();
labelSelectedValue.Text = listBox1.SelectedItem.ToString();
}查了资料显示:
selectedItem——指的是选中的dropdownlist中选项,为ListItem,只读不写selectedValue——指的是选中的dropdownlist中选项的值,为string, 只读不写
selecteditem是选中的项,它包括value和text(value和text不都是一样的吗)selectedvalue是选中项的value
我上面的程序用selectedvalue没问题,用了selecteditem显示system.data.datarowv。请问难道我就不能从selecteditem获得value,然后使selectedvalue的功能等于selecteditem(可惜vs10没有selecteditem.Value)
selectedvalue是所有选择的值
两者返回的东西不一样,前者返回一个string值,后台返回一个ListItem对象.
SelectedValue==SelectedItem.Value// true
private void Form1_Load(object sender, EventArgs e)
{
MyDatabaseDataSet myDatabaseDataSet = new MyDatabaseDataSet();
MyDatabaseDataSetTableAdapters.MyTable1TableAdapter adapter =
new DataBindingExample.MyDatabaseDataSetTableAdapters.MyTable1TableAdapter();
adapter.Fill(myDatabaseDataSet.MyTable1);
//将bindingSource1绑定到数据源
BindingSource bindinSource1 = new BindingSource();
bindinSource1.DataSource = myDatabaseDataSet;
bindinSource1.DataMember = "MyTable1";
//绑定textBox1到“名称”
textBox1.DataBindings.Add("Text", bindinSource1, "名称");
//将dataGridView1绑定到BindingSource
dataGridView1.DataSource = bindinSource1;
//将listBox1绑定到BindingSource
listBox1.DataSource = bindinSource1;
listBox1.DisplayMember = "名称";
listBox1.ValueMember = "编码";
labelSelectedValue.Text = listBox1.SelectedValue.ToString();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
labelSelectedValue.Text = listBox1.SelectedValue.ToString();
//labelSelectedValue.Text = listBox1.SelectedItem.ToString();
}
}
}
((DataRow)SelectedItem)["名称"]我怎么觉得你可以直接用
listBox.Text
难道百度这句话是骗人的selecteditem是选中的项,它包括value和text(value和text不都是一样的吗)
能的,selecteditem返回的是object,你绑定数据源是什么类型,返回的就是什么类型...
错误了,提示
Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'.
其实你这句话 labelSelectedValue.Text = (((DataRowView)listBox1.SelectedItem)["名称"]).ToString();相当于直接等于listbox1.Text,就是选择了数学院那么实际显示的值就是数学院;
而课本例子labelSelectedValue.Text = listBox1.SelectedValue.ToString();是选择了数学院那么实际显示的值就是02;是绑定了的值。。
也许这两个实际上根本就没关系,绑定惹的祸。。
listbox1.Text
不太一样,后者是前者的拷贝,应该是的