【问题标题】:How to bind LINQ data to dropdownlist如何将 LINQ 数据绑定到下拉列表
【发布时间】:2010-10-07 23:11:58
【问题描述】:

此代码的最后两行无法正常工作——结果来自 LINQ 查询。我只是不确定如何将结果中的指示列成功绑定到下拉列表的文本字段和值字段:

    protected void BindMarketCodes()
    {
        List<lkpMarketCode> mcodesList = new List<lkpMarketCode>();

        LINQOmniDataContext db = new LINQOmniDataContext();

        var mcodes = from p in db.lkpMarketCodes 
                        orderby 0
                        select p;

        mcodesList = mcodes.ToList<lkpMarketCode>();

        //bind to Country COde droplist
        dd2.DataSource = mcodesList;
        dd2.DataTextField = mcodesList[0].marketName;
        dd2.DataValueField = mcodesList[0].marketCodeID.ToString();

    }

【问题讨论】:

    标签: c# asp.net linq ado.net


    【解决方案1】:
    protected void BindMarketCodes()
    {
        using(var dc = new LINQOmniDataContext())
        {
            dd2.DataSource = from p in db.lkpMarketCodes
                             orderby 0
                             select new {p.marketName, p.marketCodeID };
            dd2.DataTextField = "marketName";
            dd2.DataValueField = "marketCodeID";
            dd2.DataBind();
        }
    }
    
    // no need to use ToList()
    // no need to use a temp list;
    // using an anonymous type will limit the columns in your resulting SQL select
    // make sure to wrap in a using block;
    

    【讨论】:

    • 感谢您添加此内容。由于您概述的原因,我更喜欢您的方法。
    • 这种方式如何给dd2添加属性?
    • 您如何在视图中引用它?我正在寻找一种方法来解决这个确切的问题。
    • 我的没有 ToList() 就坏了
    【解决方案2】:

    见下方修改后的代码

    protected void BindMarketCodes()
    {    
        using (var dataContext = new LINQOmniDataContext()) {
            //bind to Country COde droplist
            dd2.DataSource = from p in dataContext.lkpMarketCodes 
                orderby p.marketName
                select new {p.marketCodeID, p.marketName};
            dd2.DataTextField = "marketName";
            dd2.DataValueField = "marketCodeID";
            dd2.DataBind();
        }
    }
    

    【讨论】:

    • 在我添加 dd2.DataBind(); 之前无法正常工作正如#Andrew_Robinson 建议的那样
    【解决方案3】:
    DropDownList ddl_RouteLocation = (DropDownList)e.Row.FindControl("ddl_RouteLocation");   
    
    ddl_RouteLocation.DataSource = dtLocation;--(dtlocation i have return method of linq in dtlocation)
    ddl_RouteLocation.DataTextField =dtLocation.Rows[0]"LocationName"].ToString();
    ddl_RouteLocation.DataValueField =dtLocation.Rows[0]["LocationId"].ToString();
    ddl_RouteLocation.DataBind();
    ddl_RouteLocation.Items.Insert(0, new ListItem("--Select--", "0"));
    

    【讨论】:

    • 这个解决方案太复杂了,实现起来更容易——看andleer的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多