2009-02-16 33 views
18

Hai dòng cuối cùng của mã này không hoạt động chính xác - kết quả sẽ trở lại từ truy vấn LINQ. Tôi chỉ không chắc chắn làm thế nào để liên kết thành công các cột ghi trên kết quả vào textfield và valuefield của DropDownList:Cách liên kết dữ liệu LINQ với danh sách thả xuống

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

    } 

Trả lời

28

Xem mã sửa đổi dưới đây

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(); 
    } 
} 
+0

cách mát mẻ , hoạt động tuyệt vời, thx! – alchemical

+2

không thể làm cho nó hoạt động cho đến khi tôi thêm dd2.DataBind(); như được đề xuất bởi #Andrew_Robinson – openshac

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; 
+1

Cảm ơn bạn đã thêm điều này. Tôi thích cách tiếp cận của bạn tốt hơn, vì những lý do mà bạn vạch ra. –

+0

cách thêm thuộc tính vào dd2 theo cách này? – mmssaann

+0

Bạn sẽ tham chiếu điều này như thế nào trong một chế độ xem? Tôi đang tìm cách giải quyết vấn đề chính xác này. –

-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")); 
+0

Giải pháp này quá phức tạp và có thể được thực hiện dễ dàng hơn - xem câu trả lời của andleer –

Các vấn đề liên quan