使用 Eval 绑定下拉列表

发布于 2024-09-02 06:00:23 字数 226 浏览 1 评论 0原文

我有一个下拉列表,它通过实体对象获取数据,但带有导航。但我尝试这样做时遇到错误,有人可以帮助我吗?

I have a dropdownlist that gets data through entity objects, but with a navigation. But I get an error trying to do this, can anyone help me please.
<asp:DropDownList ID="ddlVacancy" DataValueField="ID" DataTextField='<%# Eval("Position.Name") %>'
runat="server" Width="200px"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墨落成白 2024-09-09 06:00:23

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

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

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

希望这会有所帮助

You can create a property in your entity object like this:

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

and then replace Eval("Position.Name") with Eval("PositionName")

hope this helps

十秒萌定你 2024-09-09 06:00:23

我遇到了同样的问题,我设法创建一个派生自 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 );
            }
        }
    }
}

I had the same issue and I managed to create a simple control that derives from DropDownList.
I also implemented an ItemDataBound Event that can help as well.

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 );
            }
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文