2011-06-06 23 views
0

我目前停留在一個小問題上。c#使用下拉列表排序變量數據

我有一個列表視圖,顯示產品,我期待包括一個下拉列表,與按訂貨會的產品通過高價格低或低時高的過濾器按鈕。

這是我的代碼。

protected void LB_Filter_Click(object sender, EventArgs e) 
{ 
    using (DataClasses_ECDataContext db = new DataClasses_ECDataContext()) 
    { 
     DT_Product Pro = db.DT_Products.SingleOrDefault(x => x.ProductID == int.Parse(ViewState["ProductID"].ToString())); 

     var product = from x in db.DT_Products 
         where x.RangeID == Pro.RangeID 
         select new 
         { 
          x.ProductName, 
          x.ProductID, 
          x.Sale_Price, 
          Link = RouteTable.Routes.GetVirtualPath(null, "Product-by-tag", codesnippets.RouteLink(x.ProductID, x.ProductName, 'p')).VirtualPath, 
         }; 

     if (DDL_Order.SelectedIndex == 0) 
     { 
      product.OrderByDescending(v => v.Sale_Price); 
     } 

     else if (DDL_Order.SelectedIndex == 1) 
     { 
      product.OrderBy(v => v.Sale_Price); 
     } 

     LV_Products.DataSource = product; 
     LV_Products.DataBind(); 
    } 
} 

任何幫助將是非常美妙的,

謝謝!

+0

我怎麼會去訂購基礎上選定的索引數據。 – Callum 2011-06-06 10:59:40

+0

你的問題不清楚!你的代碼不起作用嗎?你有錯誤嗎? – danyolgiax 2011-06-06 11:11:19

回答

1

您需要通過將其轉換成列表,以獲得預期的輸出,這樣執行的結果:

 List<DT_Product> products = new List<DT_Product>(); 
     if (DDL_Order.SelectedIndex == 0) { 
      products = product.OrderByDescending(v => v.Sale_Price).ToList(); 
     } else if (DDL_Order.SelectedIndex == 1) { 
      products = product.OrderBy(v => v.Sale_Price).ToList(); 
     } 


     LV_Products.DataSource = products; 
     LV_Product.DataTextField = "ProductName"; 
     LV_Product.DataValueField = "ProductID"; 
     LV_Products.DataBind(); 
+0

謝謝!鍛鍊了魅力! – Callum 2011-06-06 11:18:11

1

你錯過了?

LV_Products.DataSource = product; 
LV_Product.DataTextField="ProductName"; 
LV_Product.DataValueField="ProductID"; 
LV_Products.DataBind();