如何将LINQ数据绑定到下拉列表

alc*_*cal 19 c# linq asp.net ado.net

此代码的最后两行无法正常工作 - 结果将从LINQ查询返回.我只是不确定如何成功地将结果中指示的列绑定到下拉列表的textfield和valuefield:

    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();

    }
Run Code Online (Sandbox Code Playgroud)

and*_*eer 33

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;
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 29

请参阅下面的修订代码

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在我添加dd2.DataBind()之前,它无法正常工作; 正如#Andrew_Robinson所建议的那样 (2认同)