嘿,我也对此感兴趣,但我认为我发现这是不可能的(至少在当前的 ASP Net 功能集中)。我发现的最有用的 RowFilter 资源在这里:http://www.csharp-examples.net/dataview-rowfilter/
在该站点中,最有用的花絮是您可以进行 SUM、COUNT、MIN、MAX、AVG(平均)、STDEV(统计标准差)和 VAR;以及 CONVERT、LEN、ISNULL、IIF、TRIM、SUBSTRING。
我的过滤器问题是,当您的基础值为 1.23456 时,您只显示第一个 sig 数字(因此它会显示 1.23),然后尝试过滤值 = 1.23 给出的位置没结果。理想情况下,ROUND 功能将允许我将行值四舍五入到我感兴趣的 sig-digs,但我也无法找到实现此目的的合理方法。
祝你好运,如果我遇到任何事情,我会告诉你的。
编辑:实际上,在我写完这篇文章后,我想到了一种不那么笨拙的方法。一种可行但并不完全糟糕的方法是将两个值乘以 10^x,然后转换为整数。示例代码如下:
int mult = Convert.ToInt32(Math.Pow(10.0, _defaultDecimalSignificantDigits)); //in your example 2
dv.RowFilter = String.Format("CONVERT({0}*{3},System.Int32){1}CONVERT({2}*{3},System.Int32)", name, expression, value, mult); //where "name" is your column name, "expression" is =, <>, etc, and "value" is the entered row filter value
值不会在显示中相乘,仅在过滤器逻辑中。因此,如果您的分数是 14.998,则将您的过滤器乘以 1000(将您的过滤器和值设为 14,998)。
这显然取决于您要舍入多少小数位,但在您的 2 舍入示例中,您只需将两者乘以 100。具有足够大的数字和/或足够的小数位舍入,你也可能溢出 Int32 边界,而 Int64 可能是必要的。