Kendo Grid列的十进制丢失精度

时间:2014-05-07 00:25:08

标签: asp.net-mvc-4 razor kendo-grid

我已将一些数据绑定到Kendo网格,我遇到的问题是网格似乎只想显示两个小数位而不是5或6或者经度和纬度列的实际值。

以下是我视图中的代码:

<div class="gridPadding">    
    @(Html.Kendo().Grid((IEnumerable<DealerPortal.Models.DealerViewModel>)ViewData["DealerResults"])
                .Name("dealerSearchResults")
                .Columns(columns =>
                {
                    columns.Bound("DealerID");
                    columns.Bound("DealerName");
                    columns.Bound("TerminalID");
                    columns.Bound("Status");
                    columns.Bound("Address1");
                    columns.Bound("State");
                    columns.Bound("PhoneNumber");
                    columns.Bound("Email");
                    columns.Bound("Latitude");
                    columns.Bound("Longitude");
                    columns.Bound("EpayRetailerID");
                })
                .DataSource(dataSource => dataSource.Server().Model(model => model.Id(d => d.DealerID)))
                .Selectable(selectable => selectable.Mode(GridSelectionMode.Multiple))
                .Sortable()
            )
        </div>

这是DealerViewModel类:

public class DealerViewModel
{        
    public long DealerID { get; set; }
    public string DealerName { get; set; }
    public string Address1 { get; set; }
    public string PhoneNumber { get; set; }
    public string Email { get; set; }
    public decimal? Latitude { get; set; }
    public decimal? Longitude { get; set; }
    public string EpayRetailerID { get; set; }
    public string TerminalID { get; set; }
    public string State { get; set; }
    public char Status { get; set; }
}

当我单步执行代码时,我可以看到ViewData["DealerResults"]保存经度和纬度的正确值,但网页上显示的网格会在2位小数后将其截断。我只有可以为空的十进制类型来满足我进一步上游的一些错误,但它似乎不应该是问题。

我似乎无法找到格式化这些值的方法,因为有时它们是负值并且小数位数会发生变化。

我尝试了columns.Bound("Latitude").Format("00.000");,它只创造了每一个价值&#34; 00.000&#34;和columns.Bound("Latitude").Format("##.###");也创造了每一个价值&#34; ##。###&#34;。

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:6)

尝试columns.Bound("Latitude").Format("{0:n6}");它将填写所有小数位,直到第6位。希望这会有所帮助。