【问题标题】:How to add in KendoUI MVC Grid a thousand comma separator如何在 KendoUI MVC Grid 中添加千位逗号分隔符
【发布时间】:2016-03-11 20:28:58
【问题描述】:

我想在 Grid 中显示 1000 和 1,000 一样(必须有逗号)。初始数据类型是字符串。我需要千位逗号分隔符。

我有同样的问题 How to change display format of long variable?。但是我的数据类型是字符串。

在这个主题中,他们对 KendoUI MVC Grid 没有明确的答案 千位逗号分隔符。

我有 KendoUI Grid

@(Html.Kendo().Grid((IEnumerable<MyApp.Models.MyModel>)ViewBag.QualReq)
    .Name("MyGrid")
    .Columns(columns =>
        { 
        columns.Bound(p => p.Actual); 
        })
    .DataSource(d => d
        .Ajax()
    )
)

型号

public class MyModel
{ 
    public virtual string Actual { get; set; } 
}

控制器

    [OutputCache(Duration = 60)]
    public ActionResult MyActionMethod(int RankId = 0)
    { 
        . . .                  
        ViewBag.QualReq = qualificationRequirements.Where(x => x.RankID == RankId).ToList();
        . . .

我在数字格式主题中没有找到任何关于 MVC 网格的信息。 http://docs.telerik.com/kendo-ui/framework/globalization/numberformatting

【问题讨论】:

    标签: asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    您链接到的数字格式文档显示了您将如何在 JavaScript 中执行此操作。您遇到的部分问题是您正在使用字符串属性来存储数字数据。您需要将Actual 属性更改为int(或其他一些数字类型)而不是string,然后添加DisplayFormat 属性[DisplayFormat(DataFormatString = "{0:N2}")]

    但要记住的是,如果不设置文化,它将使用线程的当前文化(可能是 en-US,因为您想使用逗号作为分隔符)来确定分隔符应该。如果你需要它是不同的东西(对于不同的文化),你需要明确地设置文化。

    【讨论】:

    • [DisplayFormat(DataFormatString = "{0:N2}")] public virtual string Actual { get;放; } 不适合我
    • 我更新了我的答案。问题是您的 Actual 属性是一个字符串,因此格式实际上被忽略了。如果该值是数字,则应使用其中一种数字数据类型来存储它。
    • 问题是:如果数据类型是字符串,如何将 1000 格式化为 1,000?
    • 你真的不能不首先以某种方式将数据类型更改为数字。为什么数据类型必须是字符串?
    • 数据具有单词等值,例如“活动”和数字。
    【解决方案2】:

    您可以使用 ClientTemplate 在网格本身上执行此操作。

    @(Html.Kendo().Grid((IEnumerable<MyApp.Models.MyModel>)ViewBag.QualReq)
        .Name("MyGrid")
        .Columns(columns =>
            { 
                columns.Bound(p => p.Actual).ClientTemplate("#= kendo.format('{0:N0}', parseInt(Actual)) #"); 
            })
        .DataSource(d => d
            .Ajax()
        )
    )
    

    如果此字段有时包含非数字数据,您可能需要包含一些逻辑来说明这些情况。

    【讨论】:

      【解决方案3】:

      在 Columns Kendo Grid 中设置 .Format("{0:n0}")

      .Columns(columns =>
      {
          columns.Bound(c => c.Price).Format("{0:n0}"); 
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        • 1970-01-01
        • 2010-12-07
        • 2013-07-20
        • 1970-01-01
        • 2016-07-05
        • 1970-01-01
        相关资源
        最近更新 更多