远程服务正在返回未排序的数据集。 表格列是'标题','作者','版本','价格' 我们被告知,如果价格为0,那么这本书就“缺货”。
我正在实现排序功能,方法是将其转换为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;
答案 0 :(得分: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价格的排序数据
希望它对你有所帮助。
感谢。