c# - 如何从 webform listbox_SelectedIndexChanged 取回对象

标签 c# object webforms listbox

我的 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/

相关文章:

c# - 您可以停止通过其调用的方法执行的按钮单击事件吗?

用于清理 Web 表单数据的 PHP 函数

c# - 使用 cmd.exe/c 相对于根本不使用 cmd 的优势

c# - 从 C++ 获取复杂结构到 C#

c# - 我无法在 2tier 中使用 set get 属性检索值

c++ - 使用 getline() 从文本文件中读入行并将 push_back 读入对象 vector

c# - 在 jquery 中触发按钮单击的所有可能方法

c# - 如何检查一个DLL文件是否被注册?

javascript - 将 @Input() 对象属性分配给组件

javascript - 向js中函数内部的对象添加方法