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>
并且我的数据没有任何内容
答案 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)
更改数据表中已存在的列的类型不起作用。或者至少我不知道。如果您只想获得不同的格式,请查看上面的答案。