web-dev-qa-db-ja.com

LINQデータをドロップダウンリストにバインドする方法

このコードの最後の2行は正しく機能しません-結果は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();

    }
19
alchemical

以下の改訂されたコードを参照してください

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();
    }
}
29
James
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;
33
andleer