asp.net如何设置此格式的数字在网格视图页脚和在项模板中的格式 ("# # #,# # #。 000")

标签: Asp.net HTML CSS
发布时间: 2017/3/26 5:28:42
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如何设置此格式的数字在网格视图页脚和在项模板中的格式 ("# # #,# # #。 000")

在 html 中的页脚︰

       <FooterTemplate>
        <asp:Label ID="totallblCredAmount" runat="server" />
     </FooterTemplate> 

在代码中的页脚︰

 if (e.Row.RowType == DataControlRowType.Footer)
   {

       Label totallblCAmount = (Label)e.Row.FindControl("totallblDebAmount");
       totallblCAmount.Text = ViewState["TotalPric"].ToString();

       Label totallblCredAmount = (Label)e.Row.FindControl("totallblCredAmount");
       totallblCredAmount.Text = ViewState["TotalPrice"].ToString();

   }

项模板的 html:

 <asp:TemplateField HeaderText="credit">
            <ItemTemplate>
                 <asp:Label  runat="server" Text='<%#(Eval("credit"))%>'></asp:Label>
            </ItemTemplate>  
        </asp:TemplateField>

解决方法 1:

您必须要解析字符串值设置为 decimal ,那么你可以使用 decimal.ToString("###,###.000") 。 但是,如果您将存储 doubledecimal 中的值 ViewState 你只需要相应地将它强制转换而不是使用 ToString 将其转换为 string

所以,也许︰

if (e.Row.RowType == DataControlRowType.Footer)
{
   Label totallblCAmount = (Label)e.Row.FindControl("totallblDebAmount");
   decimal pricValue = (decimal)ViewState["TotalPric"];
   totallblCAmount.Text = pricValue.ToString("###,###.000");

   Label totallblCredAmount = (Label)e.Row.FindControl("totallblCredAmount");
   decimal priceValue = (decimal)ViewState["TotalPrice"];
   totallblCAmount.Text = priceValue.ToString("###,###.000");
}

如果您将存储一个字符串,你必须解析它正如前面提到︰

 string stringPriceValue = (string)ViewState["TotalPrice"];
 decimal priceValue = decimal.Parse( stringPriceValue );
 totallblCAmount.Text = priceValue.ToString("###,###.000");

我建议不要将十进制数的值存储为字符串,不只是因为你总是要解析它,但主要是因为你就是开放的本地化问题。


根据你的问题关于如何设置格式中的标签的评论 ItemTemplate 。如果你想要去做这些事情你能做的 aspx:

<asp:Label  runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "credit", "{0:###,###.000}") %>' ID="LblCredit"></asp:Label>

另一种方式是使用代码隐藏文件。我会用 RowDataBound 为此。

protected void GrdidView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // note that i've assigned an ID to the label
        Label lblCredit = (Label) e.Row.FindControl("LblCredit");
        DataRow row = ((DataRowView) e.Row.DataItem).Row;  // maybe you need to change the type of the dataitem
        double credit = row.Field<double>("credit");
        lblCredit.Text = credit.ToString("###,###.000");
    }
}
官方微信
官方QQ群
31647020