我还有另一个问题,就是从DB中排序实际上是字符串[varchar]的数字。在WPF列表视图中,单元格模板具有文本框。
当数据从DB中加载到listview中时,listview Salary列被绑定到数据表中的salary列。由于某些其他业务逻辑,数据库表中的此工资列是varchar。
但是当它显示在列表视图中时,工资在列表视图的工资单元格列中显示为“456.56”,如浮动或十进制数字。由于底层数据源是数据表,Salary列是一个varchar数据类型!!因此,在对listview工资列进行排序时,它不会像数字那样对工资列进行排序!!
在这种情况下我可以使用IComparer吗?如果是这样,怎么样?任何一个例子都很有用!!
答案 0 :(得分:0)
为什么不在检索数据时或在显示数据之前迭代数据并将数据解析为正确的数据类型?然后你可以让ListView
进行排序:
foreach (YourDataType item in yourItemCollection)
{
YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1,
item.Property2, decimal.Parse(item.DecimalVarcharProperty));
}
当然,如果这样做,您需要确保来自数据库的decimal VARCHAR
值实际上都是小数值。如果没有,你可以分两个阶段完成上述工作:
foreach (YourDataType item in yourItemCollection)
{
decimal decimalValue = 0;
decimal.TryParse(item.DecimalVarcharProperty, out decimalValue);
YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1,
item.Property2, decimalValue);
}
免责声明:我目前无法在编译器中查看此内容,因此可能出现错误...如果是这种情况请告诉我,我会更新答案。< / p>