我的 WinForm 代码运行良好:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var Auswahl = listBox1.SelectedItem as Beobachter;
textBox1.Text = Auswahl.BeobachterID.ToString();
textBox2.Text = Auswahl.Vorname;
textBox3.Text = Auswahl.Nachname;
}
对于 WebForm 它没有
protected void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
{
var Auswahl = *ListBox2.SelectedItem as Person*; // This part fails
txtID.Text = Auswahl.PID.ToString();
txtVorname.Text = Auswahl.Vorname;
txtNachname.Text = Auswahl.Nachname;
}
错误信息: 无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型“System.Web.UI.WebControls.ListItem”转换为“WebApplication4.Person”
我该怎么做?
最佳答案
在 webforms 中,下拉列表中的项目值不能像 Winforms 中那样是完整的对象。 SelectedItem 属性始终是 ListItem 类型并包含字符串属性 Text 和 Value。绑定(bind)下拉列表时,您需要将每个项目的值设置为对象的字符串标识符,例如,如果您的下拉列表列出了数据库中的行,则为主键。
关于c# - 如何从 webform listbox_SelectedIndexChanged 取回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27767174/