c # Упорядочивание переменных данных с использованием выпадающего списка - PullRequest
0 голосов
/ 06 июня 2011

Я застрял на небольшой проблеме.

У меня есть представление списка, в котором отображаются товары, и я хочу включить выпадающий список с кнопкой фильтра, которая при нажатии упорядочит товары по высокой или низкой цене.

Вот мой код.

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

Любая помощь будет фантастической,

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Вам нужно выполнить результаты, преобразовав их в список, чтобы получить ожидаемый результат, например:

        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();
1 голос
/ 06 июня 2011

Вам не хватает этого?

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