Hey, je suis également intéressé par cela, mais je pense que j'ai trouvé que ce n'est pas possible (au moins dans l'ensemble actuel de la fonctionnalité ASP Net). La ressource RowFilter la plus utile que j'ai trouvée est ici: http://www.csharp-examples.net/dataview-rowfilter/
Dans ce site, la friandise la plus utile est que vous pouvez faire SUM, COUNT, MIN, MAX, AVG (moyenne), STDEV (écart-type statistique) et VAR ; ainsi que CONVERT, LEN, ISNULL, IIF, TRIM, SUBSTRING. Mon problème avec le filtre est lorsque vous avez une valeur sous-jacente de 1,23456, et que vous affichez seulement les premiers chiffres de sig (donc il afficherait 1,23), puis essayez de filtrer où la valeur = 1,23 ne donne aucun résultat Idéalement, la fonctionnalité ROUND me permettrait d'arrondir les valeurs des lignes aux sig digs qui m'intéressent, mais j'ai également été incapable de trouver une façon saine d'y parvenir.
Bonne chance, je vous ferai savoir si je tombe sur quelque chose.
EDIT: En fait, après avoir écrit ceci, j'ai pensé à une manière moins joviale de le faire. Une façon qui fonctionne et n'est pas tout à fait terrible est de multiplier les deux valeurs par 10^x, puis de les convertir en entiers. Exemple de code ci-dessous:
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
Les valeurs ne sont pas multipliées dans l'affichage, seulement dans la logique de filtrage. Donc, si votre score était de 14,998, vous multipliez votre filtre par 1000 (donnant à votre filtre une valeur de 14,998). Cela a évidemment des limites basées sur le nombre d'espaces décimaux que vous cherchez à arrondir, mais dans votre exemple de ronde par 2, vous auriez seulement à multiplier les deux par 100. Avec des nombres assez grands et/ou assez décimaux espaces arrondis, vous pouvez également dépasser les limites Int32, et Int64 peut être nécessaire.
Merci pour votre réponse Adam. C'est dommage que cela ne puisse pas être fait plus élégamment, mais votre idée de multiplier par 10^x est au moins une façon de le faire.Int64 peut être un moyen plus sûr de le faire pour éviter le débordement. Je vais essayer votre idée. – mikehamer