ねえ、私もこれに興味がありますが、(少なくとも現在の 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-dig に丸めることができますが、これを達成する適切な方法を見つけることもできませんでした。
幸運を祈ります。何か見つけたらお知らせします。
編集:実際、これを書いた後、これを行うためのよりジャンキーな方法について考えました。両方の値に 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 が必要になる場合があります。