2010-11-30 6 views
0
Dim pctofpax As New DataColumn 
     pctofpax = New DataColumn("PCTPAX1", GetType(Decimal)) 
     pctofpax.Expression = "[ASOFPAX]/[YEPAX]" 
     ds.Tables("workplease").Columns.Add(pctofpax) 

     Dim avgppax As New DataColumn 
     avgppax = New DataColumn("AVG PAX", GetType(Double)) 
     avgppax.Expression = "[Current Sales]/[Current PAX]" 
     ds.Tables("workplease").Columns.Add(avgppax) 

Ce sont deux colonnes que j'ai ajoutées dans ma base de données asp.net/vb.net. le problème est que je continue à essayer de changer les types de données afin qu'ils apparaissent comme des nombres avec seulement deux décimales, mais il ne fonctionne pasType de données vb.net dans une colonne ajoutée manuellement

  <span lang="en-us">Sales As Of Analysis</span><br /> 
     <asp:GridView ID="GridView1" runat="server" BackColor="White" 
      BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
      GridLines="Vertical"> 
      <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> 
      <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 
      <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" /> 
      <AlternatingRowStyle BackColor="#DCDCDC" /> 
     </asp:GridView> 
    <asp:BoundColumn DataField="PCTPAX1" 
       HeaderText="PCTPAX1" 
       DataFormatString="{0:c}"> 

    </div> 
    </form> 
</body> 
</html> 

et rien ne se passe à mes données

+0

Définir "ne fonctionne pas". Comment ça marche? S'agit-il simplement de formater les valeurs à l'écran pour afficher seulement deux décimales? Ou y a-t-il un autre problème? – David

+0

bien j'ai essayé de faire une décimale (10,2) et cela ne fonctionne peut-être que je fais juste mal – MyHeadHurts

Répondre

2

Si c'est juste une question d'afficher uniquement deux décimales, cela peut être accompli dans le code d'affichage pour le DataGrid:

<asp:BoundField DataField="PCTPAX1" 
       HeaderText="PCTPAX1" 
       DataFormatString="{0:c}"> 

Notez la valeur DataFormatString de {0:c} qui précise que la mise en forme de la valeur dans ce domaine doit être « roquet l'honneur. " (Vous pouvez également essayer avec un capital C, je n'ai pas un test pratique pour cela maintenant.) Il y a beaucoup plus que vous pouvez faire avec des chaînes de format, plus d'informations here. Ou voulez-vous que les valeurs réelles soient arrondies aux valeurs monétaires? Vous utiliserez probablement Math.Round pour cela, même si je n'ai pas d'exemple pratique. Il y a des informations à ce sujet here. En fonction de votre (vos) commentaire (s), il semble que vous essayiez de changer les types de données au niveau de la base de données. Cela n'aura pas vraiment d'impact sur le code. La valeur revenant de la base de données sous la forme d'un double ou décimal ou d'un autre numérique ne ramènera probablement pas cette précision au code. En ce qui concerne le DataGrid, il appelle .ToString() sur un double et montrant le résultat. Aucun type de données de base de données n'est impliqué. L'utilisation de la propriété DataFormatString pour passer une chaîne de format à la méthode .ToString() consiste à modifier l'affichage.

Modifier à nouveau en fonction de votre question éditer: Votre code HTML est cassé. Vous avez le BoundColumn en dehors de la grille, et la balise de colonne elle-même n'est pas fermée. Les colonnes vont à l'intérieur de la grille. Voir la disposition de la grille here. Fondamentalement, vous voudriez quelque chose de plus comme:

<asp:GridView ID="GridView1" runat="server" BackColor="White" 
       BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
       GridLines="Vertical"> 
    <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> 
    <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 
    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
    <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" /> 
    <AlternatingRowStyle BackColor="#DCDCDC" /> 
    <Columns> 
     <asp:BoundField DataField="PCTPAX1" 
         HeaderText="PCTPAX1" 
         DataFormatString="{0:c}"> 
     </asp:BoundField> 
    </Columns> 
</asp:GridView> 
+0

est-il un moyen que je peux le faire pour toute la table je ne veux plus voir plus de 2 décimales – MyHeadHurts

+1

@NEWprogrammer : Pas que je sache de. Chaque colonne est son propre type de données et ses propres données. De combien de colonnes parlons-nous? Ajouter 'DataFormatString' à chacun ne devrait pas être un gros problème. – David

+0

ouais je ne m'inquiète pas comment les valeurs sont écrites dans la base de données, parce que je ne prévois pas de permettre une mise à jour de mon programme à la base de données, la préoccupation principale est à des fins de visualisation. Cependant, il semble vraiment en désordre avec 0000 partout où – MyHeadHurts

0

Changer le type d'une colonne qui est déjà dans votre datatable ne fonctionne pas. ou du moins pas que je sache. Si vous voulez juste obtenir un formatage différent, regardez les réponses ci-dessus.