手动添加列中的vb.net数据类型

时间:2010-11-30 16:55:15

标签: vb.net

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数据网格中的两列。问题是我一直在尝试更改数据类型,以便它们显示为只有两位小数的数字,但它不起作用

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

并且我的数据没有任何内容

2 个答案:

答案 0 :(得分:2)

如果仅显示两位小数,则可以在DataGrid的显示代码中完成:

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

请注意DataFormatString的{​​{1}}值,该值指定该字段中值的格式应为“货币”。 (您也可以尝试使用大写{0:c},我现在没有测试方法。)您可以使用格式字符串做更多的事情,更多信息here

或者您希望将实际值四舍五入为货币值吗?你可能会使用C,但我没有一个方便的例子。有关here的信息。

编辑:根据您的评论,听起来您试图在数据库级别更改数据类型。这不会真正影响代码。以double或decimal或其他数字形式从数据库返回的值可能不会将该精度带回代码。至于Math.Round,它会在DataGrid上调用.ToString()并显示结果。不涉及数据库数据类型。使用double属性将格式字符串传递给DataFormatString方法是如何更改显示。

根据您的问题编辑再次进行修改:您的HTML已损坏。您在网格外部具有BoundColumn,并且列标记本身未关闭。列进入网格内部。查看网格布局here。基本上,你想要更像的东西:

.ToString()

答案 1 :(得分:0)

更改数据表中已存在的列的类型不起作用。或者至少我不知道。如果您只想获得不同的格式,请查看上面的答案。