c#使用下拉列表排序可变数据

时间:2011-06-06 10:56:35

标签: c# listview drop-down-menu

我目前陷入了一个小问题。

我有一个显示产品的列表视图,我希望包含一个下拉列表,带有一个过滤按钮,按下该按钮将按高价或低价订购产品。

这是我的代码。

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 个答案:

答案 0 :(得分:1)

你错过了吗?

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

答案 1 :(得分:1)

您需要通过将结果转换为list来获得预期输出来执行结果,如下所示:

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