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