Эй, меня это тоже интересует, но я думаю, что обнаружил, что это невозможно (по крайней мере, в текущем наборе функциональных возможностей 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, и вы отображаете только первые сигнатурные цифры (чтобы он отображал 1.23), а затем пытаетесь отфильтровать, где значение = 1.23 дает Нет результатов. В идеале функциональность ROUND позволила бы мне округлять значения строк до интересующих меня сигнатур, но я также не смог найти разумного способа сделать это.
Удачи, я дам вам знать, если наткнусь на что-нибудь.
РЕДАКТИРОВАТЬ: На самом деле, после того, как я написал это, я подумал о менее дерзкий способ сделать это. Один способ, который работает и не совсем ужасен - умножить оба значения на 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.