2010-11-30 9 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) 

これらは、私がasp.net/vb.netデータグリッドに追加した2つの列です。問題は、私は、彼らは2つだけ小数点で数字として表示してデータ型を変更しようとし続けるが、それは 手動で追加された列のvb.netデータ型

  <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> 

が動作していない、それが唯一の表示だけの問題なら、何も私のデータ

+0

「機能しない」と定義します。どのように失敗していますか? 2つの小数しか表示されない場合は、ディスプレイの値を書式設定するだけですか?それとも別の問題がありますか? – David

+0

まあ私は10進数(10,2)をやってみたが、それは多分私はそれが間違っているとおそらく働いていない – MyHeadHurts

答えて

2

に起こったんです小数第2位は、これはDataGridの表示コードで達成することができる。

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

なお、フィールドの値のフォーマットがなければならないことを指定{0:c}DataFormatString値「CURを腎臓。 (資本金はCで試すこともできますが、私はすぐにテストすることはできません)フォーマット文字列でもっと多くのことができます。詳細はhereです。

または、実際の値を通貨の値に丸めますか?あなたはおそらくMath.Roundを使用しますが、私は便利な例はありません。その情報はhereです。

編集:あなたのコメントに基づいて、データベースレベルでデータ型を変更しようとしていたようです。これは実際にコードには影響しません。二重または十進数または他の数値の形でデータベースから返される値は、その精度をコードに戻しません。 DataGridに関する限り、それはdouble.ToString()を呼び出してその結果を示しています。データベースのデータ型は関係ありません。 DataFormatStringプロパティを使用して.ToString()メソッドに書式文字列を渡す方法は、表示を変更する方法です。

質問に基づいて再度編集編集:あなたのHTMLは壊れています。 BoundColumnがグリッドの外側にあり、列タグ自体が閉じられていません。列はグリッドの内側にあります。グリッドレイアウトhereを参照してください。基本的には、次のようなものが望ましいでしょう。

<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

私は全体のテーブルのためにそれを行うことができます私は2小数点以下を参照したくない方法 – MyHeadHurts

+1

@NEWprogrammer :私が知っていることではない。各列は、独自のデータ型とそれ自身のデータです。いくつの列が話していますか?それぞれに 'DataFormatString'を追加することは大したことではありません。 – David

+0

私は自分のプログラムからデータベースへの更新を許可しないので、データベースに値がどのように書き込まれているか気にしません。しかし、それは0000どこでも本当に乱雑に見える – MyHeadHurts

0

データテーブル内に既に存在する列の型を変更することはできません。少なくとも私が知っているものではない。別の書式設定をしたい場合は、上記の答えを見てください。

関連する問題