我如何将对象的List <>绑定到DropDownList并根据对象中的属性设置SelectedItem?

use*_*799 12 c# asp.net data-binding drop-down-menu

我如何List<>将对象数据绑定到DropDownList并根据对象中的属性设置SelectedItem?

例如,说我有一个 List<Person>

人有3个属性......

Person .Name (string)
       .Id  (int)
       .Selected (bool)
Run Code Online (Sandbox Code Playgroud)

我希望第一个Selected == true的是列表中的SelectedItem.

Cha*_*ian 20

试试这个:

List<Person> list = new List<Person>();
// populate the list somehow

if ( !IsPostBack )
{
    DropDownList ddl = new DropDownList();
    ddl.DataTextField = "Name";
    ddl.DataValueField = "Id";
    ddl.DataSource = list;
    ddl.DataBind();

    ddl.SelectedValue = list.Find( o => o.Selected == true ).Id.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如果您不能保证始终至少有一个选定的项目,那么您将需要通过检查来自list.Find()呼叫的返回值来单独处理它,以确保它不是null.

另外,DropDownList ddl = new DropDownList(); 如果webform已经声明,则不需要:

<asp:DropDownList ID="ddl" runat="server" />
Run Code Online (Sandbox Code Playgroud)