0

全部,假设您有一个对象列表,其中类名为Person

public class Person
{
   public string name{get;set;}
   public string id{get;set;}
   public int age{get;set;}
   public Major major{get;set;}
}

public class Major{
   public string MajorName{get;set;}
   public string MajorId{get;set;}
}

假设你有一个ListBoxwhich id is personListBox。并且它正在尝试与Listof绑定Person

List<Person> list= new List<Person>();
list.add(...);
...
list.add(...);

personListBox.DataSource=list;
personListBox.DataTextField = "name";
personListBox.DataValueField = "id";
personListBox.DataBind();

但我的问题是如何将所选项目转换为Person?我想象的代码如下所示。

    protected void personListBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        //Person item = (Person)lbBizCategory.SelectedItem;
        //string majorName = item.major.MajorName;

    }

不幸的是,它不起作用。有什么办法可以做到吗?谢谢。

4

2 回答 2

1

您可能仍然对您的列表有参考。尝试

 protected void personListBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        Person yourPerson = list.First(x => x.id == int.Parse(personListBox.SelectedValue));
    }
于 2013-07-15T13:03:45.180 回答
0

我们不能直接将 selectedItem 类型转换为 Person 类型..!! 相反,我们可以创建一个 Person 对象并将对象属性的值分配给 selectedItem,如下所示:

Person person=new Person();
person.name=personListBox.SelectedItem.ToString();

顺便说一句,我们不能像你写的那样向列表添加值: List list= new List(); list.add(...); 由于 list 现在只能接受 Person 类型;所以我们需要创建人员对象,填充对象的属性,然后将对象添加到列表中:

Person person=new Person();
person.name="sagar";
person.id=1;
....
list.add(person);
于 2013-07-15T12:50:16.857 回答