VB.NET如何将十进制格式应用于Gridview中的特定列?

时间:2013-04-09 09:07:33

标签: sql vb.net gridview floating-point decimal

如何将十进制格式应用于Gridview中的特定列?

例如,正在从SQL填充83.7837837837838,如何将其转换为83.8。

我只想将其应用于一列,因为其他列是整数,所以这不是必需的。

2 个答案:

答案 0 :(得分:2)

一种方法是使用DataFormatString属性。例如:

 <asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="ProductID" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="ListPrice" 
            HeaderText="ListPrice" 
            SortExpression="ListPrice"
            DataFormatString="{0:F1}" />
    </Columns>
</asp:GridView>

你也可以使用RowDataBound来控制你:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        // assuming you are using BoundFields and
        // the column which you want to format is the first
        // if you are using TemplateFields use e.Row.FindControl("ControlID") to find your controls
        var row = (DataRowView) e.Row.DataItem;
        decimal price = (decimal)row["ListPrice"];
        e.Row.Cells[0].Text = price.ToString("F1");
    }
}

编辑:这里是VB.NET版本:

Protected Sub GridView1_RowDataBound(sender As [Object], e As GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        ' assuming you are using BoundFields and                                                   '
        ' the column which you want to format is the first                                         '
        ' if you are using TemplateFields use e.Row.FindControl("ControlID") to find your controls '
        Dim row = DirectCast(e.Row.DataItem, DataRowView)
        Dim price As Decimal = CDec(row("ListPrice"))
        e.Row.Cells(0).Text = price.ToString("F1")
    End If
End Sub

答案 1 :(得分:1)

您只需要使用 BoundField.DataFormatString 属性,为了解决您的问题并获得正确的知识,请检查此Microsoft Link

希望它适合你。

相关问题