Kendo Grid过滤后数字格式异常,如何设置为无分隔无小数显示?
问题
我碰到个Kendo Grid的小问题:在筛选列里输入纯数字614789并完成筛选后,再次打开筛选器,输入框里的数字居然变成了614,789.00,带了千分位和小数位,看着特别别扭。我的后端模型里ItemNum字段是int?类型,相关代码如下:
namespace PitchList.Models { public int? ItemNum { get; set; } } public ActionResult PitchList_Read([DataSourceRequest] DataSourceRequest request, string salesReps, int? custNum, int? custName, int? genericSource, int? noSalesDate , int? programs, int? lastSearched) { IEnumerable<PitchListViewModel> data = new List<PitchListViewModel>(); if (custNum != null || custName != null) { data = pl.Read(salesReps, custNum, custName, genericSource, noSalesDate, programs, lastSearched); } return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); }
[Kendo列筛选器显示效果:显示值满足以下条件的项:等于 617,353.00]
解决方案
这个其实是Kendo Grid默认的数值格式化在搞鬼,它会自动给数值类型加上千分位和小数位,咱们可以通过几种方式调整回来:
- 最简单的方式:给列设置整数格式
直接在Grid的列配置里,给ItemNum列指定format: "{0:n0}",这个格式表示无小数、无千分位的整数显示,不仅表格里的数值会正常显示,筛选器里的输入值也会同步保持纯数字样式:
$("#grid").kendoGrid({ columns: [ { field: "ItemNum", title: "Item Number", format: "{0:n0}", // 关键配置:整数格式 filterable: true } // 其他列配置... ], // 其他Grid设置... });
- 更灵活的方式:自定义筛选器输入框
如果需要对筛选器输入框有更多控制(比如去掉上下调节按钮),可以给列配置自定义筛选UI,用kendoNumericTextBox来精确控制格式:
$("#grid").kendoGrid({ columns: [ { field: "ItemNum", title: "Item Number", filterable: { ui: function(element) { // 初始化数值输入框,强制整数格式 element.kendoNumericTextBox({ format: "{0:n0}", decimals: 0, // 小数位数设为0 spinners: false // 可选:去掉默认的上下调节按钮 }); } } } // 其他列... ], // 其他Grid配置... });
- 额外注意:确保后端数据类型正确
从你的C#代码来看,ItemNum是int?类型,后端通过ToDataSourceResult返回的JSON应该是纯整数类型,不会带小数位,这一步是基础,只要后端数据类型没问题,配合上面的前端配置就能完美解决问题啦。
内容的提问来源于stack exchange,提问作者afd31
相关产品推荐
相关产品推荐

