2010-11-30 69 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 datagrid中的兩列。問題是我一直試圖改變數據類型,使他們顯示爲數字,只有兩位小數,但它不工作手動添加列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> 

並沒有什麼happend我的數據

+0

定義「不工作」。它如何失敗?僅僅是將顯示中的值格式化爲僅顯示兩位小數的問題?還是有其他問題? – David 2010-11-30 17:03:01

+0

以及我試着做一個十進制(10,2)和不工作,也許我只是做錯了 – MyHeadHurts 2010-11-30 17:06:37

回答

2

如果它只是一個只顯示的事兩位小數,這可以在上述顯示用代碼來實現爲DataGrid

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

{0:c}DataFormatString值指定的值的該字段中的格式應該是「CUR rency「。 (您也可以嘗試用資本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

更改已經在您的數據表中的列的類型不起作用。或者至少不是我所知道的。如果你只想得到不同的格式,請看上面的答案。