近日客户有需求要求页面按房号显示费用明细,并且要求每个房号要单独统计出小计,最后再显示总计。感觉这个问题不难,单独按每个房号进行了求和,然后加入datatable,又按房号进行排序。代码如下:
var dv = dt3.DefaultView;
dv.Sort = "rfullname ASC";
dgList.DataSource = dv;
dgList.PageSize = 5000;
dgList.DataBind();
实现的页面效果如下:
感觉没什么问题,然后上线了。让客户看下。结果过了一会,客户说显示不正确,总计在中间显示。并且给我发了个截图:
确实显示到了中间。与期望的结果不符。我感觉有点不可思议。这可是按rfullname升序排列 。按sql中文列排序的经验来说。它是按首个汉字的拼音从a,b,c,...,x,y,z顺序来排序的。这怎么会出现这种情况。
最终找到了答案。dataview排序,牵涉到中文的应加上区域限制。
dt3.Locale = new System.Globalization.CultureInfo("zh-cn");
var dv = dt3.DefaultView;
dv.Sort = "rfullname ASC";
dgList.DataSource = dv;
dgList.PageSize = 5000;
dgList.DataBind();
增加了一行代码。问题解决了