使用Eval绑定下拉列表

时间:2010-05-19 10:24:04

标签: asp.net drop-down-menu eval

我有一个下拉列表,通过实体对象获取数据,但带有导航。但是我在尝试这样做时遇到了错误,任何人都可以帮助我。
<asp:DropDownList ID="ddlVacancy" DataValueField="ID" DataTextField='<%# Eval("Position.Name") %>' runat="server" Width="200px"/>

2 个答案:

答案 0 :(得分:0)

您可以在实体对象中创建一个属性,如下所示:

        public string PositionName
        {
           get
           {
               return Position.Name;
           }
        }

然后将 Eval(“Position.Name”)替换为 Eval(“PositionName”)

希望这会有所帮助

答案 1 :(得分:0)

我有同样的问题,我设法创建一个派生自DropDownList的简单控件。 我还实现了一个可以帮助的ItemDataBound事件。

public class RTIDropDownList : DropDownList
{
    public delegate void ItemDataBoundDelegate( ListItem item, object dataRow );
    [Description( "ItemDataBound Event" )]
    public event ItemDataBoundDelegate ItemDataBound;

    protected override void PerformDataBinding( IEnumerable dataSource )
    {
        if ( dataSource != null )
        {
            if ( !AppendDataBoundItems )
                this.Items.Clear();

            IEnumerator e = dataSource.GetEnumerator();

            while ( e.MoveNext() )
            {
                object row = e.Current;

                var item = new ListItem( DataBinder.Eval( row, DataTextField, DataTextFormatString ).ToString(), DataBinder.Eval( row, DataValueField ).ToString() );

                this.Items.Add( item );

                if ( ItemDataBound != null ) // 
                    ItemDataBound( item, row );
            }
        }
    }
}