使用asp.net webforms我需要在每个列表项中存储其他数据(value
字段和text
字段除外)。
这是我的数据源:
class Person
{
public string Name {get;set;}
public string PersonId {get;set;}
public string PersonType {get;set;}
}
List<Person> lista = GetPersons();
ListBox1.DataTextField = "Name";
ListBox1.DataValueField = "PersonId";
ListBox1.DataSource = lista;
ListBox1.DataBind();
DataTextField
是名称。 DataValueField
是PersonId,但是我还想绑定PersonType属性,以便当我从页面回发用户检索所选项目时:
ListItemCollection items = ListBox1.Items;
foreach (ListItem item in items)
{
if (item.Selected == true)
{
// Here I want to retrive also
// the PersonType attribute
string personType = item.????
}
}
我怎样才能做到这一点?
答案 0 :(得分:0)
正如评论中所提到的,你所建议的并不容易。 ListItem只能轻松支持值和文本。
作为一种解决方法,我建议只需通过存储在ListItem中的ID来检索此人:
List<Person> lista = GetPersons();
ListItemCollection items = ListBox1.Items;
foreach (ListItem item in items)
{
if (item.Selected == true)
{
// Here I retrieve the PersonType by matching the ID
var person = lista.FirstOrDefault( person => person.PersonId == item.value);
// You may want to check for null...
string personType = person.PersonType;
}
}
或者,您可能希望直接通过Person
创建一个PersonId
函数,因为这似乎是您可能需要定期进行的。