Использование Eval для привязки выпадающего списка - PullRequest
0 голосов
/ 19 мая 2010

У меня есть выпадающий список, который получает данные через объекты сущностей, но с навигацией. Но я получаю ошибку, пытаясь это сделать, может кто-нибудь помочь мне, пожалуйста.
<asp:DropDownList ID="ddlVacancy" DataValueField="ID" DataTextField='<%# Eval("Position.Name") %>' runat="server" Width="200px"/>

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

У меня возникла та же проблема, и мне удалось создать простой элемент управления, производный от 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 );
            }
        }
    }
}
0 голосов
/ 19 мая 2010

Вы можете создать свойство в объекте вашей сущности следующим образом:

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

и затем замените Eval ("Position.Name") на Eval ("PositionName")

надеюсь, это поможет

...