从List <objects> </objects>绑定DropDownList

时间:2014-11-14 10:35:57

标签: c# asp.net

我有一个对象列表

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();
}

如何从对象属性设置文本和值字段?

3 个答案:

答案 0 :(得分:2)

你可以尝试这个:

DropDownList.DataTextField = "Name";
DropDownList.DataValueField = "ID";

我认为,从您的评论中可以得出结论,User类型的对象有两个名为NameID的属性,这些是与您相对应的文本和值想表现出来。

答案 1 :(得分:2)

您只需在DataTextFieldDataValueField中设置列名称即可。 在您的情况下,NameID是用户列表对象的列名。

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在复杂场景中有很多可能性和灵活性。