我有一个对象列表
var listOfUsr = new List<User>();
listOfUsr = GetUserByAgentId("some_id");
if (listOfUsr != null)
{
DropDownList.DataSource = listOfModels;
//DropDownList.DataTextField = "how to set value_from User.Name ?";
//DropDownList.DataValueField = "how to set value_from User.ID ?";
DropDownList.DataBind();
}
如何从对象属性设置文本和值字段?
答案 0 :(得分:2)
你可以尝试这个:
DropDownList.DataTextField = "Name";
DropDownList.DataValueField = "ID";
我认为,从您的评论中可以得出结论,User
类型的对象有两个名为Name
和ID
的属性,这些是与您相对应的文本和值想表现出来。
答案 1 :(得分:2)
您只需在DataTextField
和DataValueField
中设置列名称即可。
在您的情况下,Name
和ID
是用户列表对象的列名。
if (listOfUsr != null)
{
DropDownList.DataSource = listOfModels;
DropDownList.DataTextField = "Name";
DropDownList.DataValueField = "ID";
DropDownList.DataBind();
}
答案 2 :(得分:1)
使用ComboBox并设置 DropDownStyle = ComboBoxStyle.DropDownList;
试试这段代码:
var listOfUsr = new List<User>();
listOfUsr = GetUserByAgentId("some_id");
comboBox1.DropDownStyle =ComboBoxStyle.DropDownList;
comboBox1.DataSource=lstOfUsr;
comboBox1.DisplayMember="Description";
您还可以拖动BindingSource类型的对象并在此模式下使用它:
var listOfUsr = new List<User>();
listOfUsr = GetUserByAgentId("some_id");
bindingSourceListOfObject.DataSource = lstOfUsr;
comboBox1.DropDownStyle =ComboBoxStyle.DropDownList;
comboBox1.DataSource=bindingSourceListOfObject;
comboBox1.DisplayMember="Description";
BindingSource在复杂场景中有很多可能性和灵活性。