0

远程服务正在返回未排序的数据集。表格列是“标题”、“作者”、“版本”、“价格”,我们被告知如果价格为 0,则该书“缺货”。

我通过将其转换为DataView然后对dataview进行排序然后绑定gridview来实现排序功能。

每个想法都可以,除非按价格排序,所有 0 价格都排在首位。我怎样才能做到这一点?请帮忙。我需要将所有 0 价格放在底部,并排序没有 0 作为价格的行?

编辑:- 当前代码如下

DataTable dt = dtu.Table(q);
             if (dt.Rows.Count>0)
             {
                 searchpanel.Visible = true;
               norecfound.Visible = false;
             }else{searchpanel.Visible = false;
               norecfound.Visible = true;}
            DataTable table = new DataTable();
            table.Columns.Add("BookCode", typeof(string));
            table.Columns.Add("TITLE", typeof(string));
            table.Columns.Add("AUTHOR_NAME", typeof(string));
            table.Columns.Add("EDITION", typeof(string));
            table.Columns.Add("PRICE", typeof(int));
            table.Columns.Add("ldistance", typeof(double));
            //id,TITLE,AUTHOR_NAME,EDITION,PRICE
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                object[] ob = dt.Rows[i].ItemArray;
                table.Rows.Add(ob[0].ToString(), ob[1].ToString(), ob[2].ToString(), ob[3].ToString(), ob[4].ToString(), getcorrespondingdist(ob));
            }
            DataView dataView = new DataView(table);
            if (HiddenField1.Value.Length < 5)
            {
                 if (Request.QueryString["sort"]!=null)
                 {
                      HiddenField1.Value = Request.QueryString["sort"];
                 }
                 else
                 {
                      HiddenField1.Value = " ldistance DESC";
                 }

            }
            dataView.Sort =  HiddenField1.Value;
4

1 回答 1

2


     我已经为您创建了演示代码,只需将其与您的代码一起使用即可。假设您在数据表 dt 中有数据。

DataRow[] drnew = dt.Select("Price <> 0");
DataRow[] drzero = dt.Select("Price = 0");
DataTable dtfinal = new DataTable();
if (drnew != null && drnew.Count() > 0)
{
    DataView dv = drnew.CopyToDataTable().DefaultView;
    dv.Sort = "Price Desc";
    dtfinal = dv.Table;
}
if (drzero != null && drzero.Count() > 0)
{
    dtfinal.Merge(drzero.CopyToDataTable());
}

dtfinal 将包含底部价格为 0 的排序数据。
希望它可以帮助你。
谢谢。

于 2013-10-25T07:08:27.867 回答