2010-08-18 6 views

Répondre

9

Le cas échéant, le format sur la couche de vue, non pas sur la couche de données, à savoir lire toutes les données et tronquer plus tard (comme dans client C#)

+0

+1. La liaison comme cela dans le répéteur a fonctionné '<% # DataBinder.Eval (Container.DataItem," FieldName "," {0: 0.00} ")%>'. Merci de m'avoir demandé de résoudre le problème. – IsmailS

+0

@Ismail: Heureux que ça a aidé! :) P.S. J'ai eu les mêmes problèmes - http://stackoverflow.com/questions/1308259/rounding-down-decimal14-3-to-third-decimal-digit-in-sql-2008 http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server – abatishchev

+0

Mais cela ne fonctionnerait pas dans les composants d'édition comme la grille EvExpress. Modifier les formulaires sont cassés par cela. – f470071

16
SELECT CAST(ROUND(123.4567, 2) AS MONEY) 

fera ce que vous êtes après

+0

Cela fonctionne, mais lorsque j'affecte la valeur à un champ dans Repeater sur ma page .aspx, il affiche de nouveau deux zéros de fin. J'utilise Linq pour sql. – IsmailS

+0

Vous pouvez utiliser un ToString() dans votre répéteur en spécifiant le format comme vous le souhaitez. –

+0

+1 merci pour votre réponse. Votre réponse est également juste en regardant ma question. Mais @abatishchev a essayé de résoudre le plus gros problème au lieu de simplement répondre à ma question. C'est pourquoi, j'ai accepté sa réponse. – IsmailS

0
SELECT FORMAT(123.4567,'N2') 

Il vous aider Out

0

@IsmailS - Pour moi, l'image plus grande est de laisser le format du serveur de données, autant que possible, surtout quand il est quelque chose d'aussi simple que d'une distribution en ligne. Il donne moins d'encombrement dans votre autre code. Par exemple, la coulée Prix, un champ d'argent:

select CAST(Price as numeric(17,2)) Price from PriceTable

YMMV - C'est mon expérience personnelle.