从列表<对象>绑定下拉列表

本文关键字:绑定 下拉列表 对象 列表 | 更新日期: 2023-09-27 18:30:18

我有一个对象列表

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

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

从列表<对象>绑定下拉列表

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

if (listOfUsr != null)
{
    DropDownList.DataSource = listOfModels;
    DropDownList.DataTextField = "Name";
    DropDownList.DataValueField = "ID";
    DropDownList.DataBind();
}

你可以试试这个:

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

我想,从您的评论中可以得出结论,类型 User 的对象有两个属性,分别称为 NameID,这些是您想要显示的文本和值。

使用 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在复杂的场景中具有许多可能性和灵活性。