为自定义格式化器slikgrid的列对象添加自定义参数
Adding custom parameter to column object for custom formatter slickgrid
我需要一些关于在光滑网格中添加自定义属性到Column对象的建议。以下是我将尝试解释的特定场景,以使我的问题陈述清楚。
我正在尝试编写一个自定义格式化程序,它使用原始文本的前4个字符缩写和大写城市的名称(我已经删除了其他规则,使这个问题易于解释)。例如,在格式化程序中,Charlotte将变成CHAR。我想在不同的字符串列上做类似的格式化,但我需要显示并大写5个字符。
这是我尝试过的。
我写了一个自定义格式化器,并在列对象中传递了自定义属性'NumOfChar'。此属性可在格式化程序的ColumnDef对象中访问。我很想知道这种方法是否正确,是否可以接受,或者是否有更好的方法来实现这一目标。
AbbreviationFormatter = function(row, cell, value, columnDef, dataContent) {
var output = '';
if(! columnDef.NumOfChar) {
columnDef.NumOfChar = 4 // sets default
}
if(value) {
output = value.substring(0, columnDef.NumOfChar).toUpperCase();
}
return output;
}
列定义中的某处
var columns = [ { id: 'id_1',
field='city',
name='city',
formatter: AbbreviationFormatter,
NumOfChar: 4 },
{ id: 'id_2',
field='randomString',
name='randomString',
formatter: AbbreviationFormatter,
NumOfChar: 6 } , ...
];
谢谢。
是的,这很容易做到,我做了它并测试了它,如预期的那样工作。首先,我制作了自定义格式化程序,请注意,我将SlickGrid格式化程序扩展到一个单独的文件中,这总是更好的,所以这里是自定义格式化程序的代码:
// Extend the Slick.Formatters Object
(function ($) {
// register namespace
$.extend(true, window, {
"Slick": {
"Formatters": {
"CustomUpper": CustomUpperFormatter,
"TitleCase": TitleCaseFormatter
}
}
});
// --
// Capitalize number of chars defined by user
function CustomUpperFormatter(row, cell, value, columnDef, dataContext) {
//console.debug(columnDef.formatterOptions.NumOfChar);
var nbChar = columnDef.formatterOptions.NumOfChar;
var output = value.substring(0, nbChar).toUpperCase() + value.substring(nbChar);
return value ? output : '';
}
// Capitalize first char of each word
function TitleCaseFormatter(row, cell, value, columnDef, dataContext) {
var output = value.replace(/'w'S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
return value ? output : '';
}
})(jQuery);
,然后是新的列定义:
// your column definition
var columns = [ { id: 'id_1',
field='city',
name='city',
formatter: Slick.Formatters.CustomUpper,
formatterOptions: { NumOfChar: 4 } },
{ id: 'id_2',
field='randomString',
name='randomString',
formatter: Slick.Formatters.CustomUpper,
formatterOptions: { NumOfChar: 4 } } ,
{ id: 'id_3',
field='randomString',
name='randomString',
formatter: Slick.Formatters.TitleCase }, ...
];
所以基本上你可以用你想要的名字添加任何你想要的属性,你只需要在格式化器中调用columnDef
属性,所以如果你在自定义格式化器中做console.debug(columnDef);
,你会看到你行的所有属性。就是这样:)
注意:
请注意,我为formatterOptions
创建了一个对象,但它实际上可以直接是NumOfChar
,如果您在实际开始代码时采用这种方法,那么只需调用columnDef.NumOfChar
。我喜欢使用对象的原因是我可以传递多个选项,例如拥有最小和最大字符数……
注意# 2
这给了我一个标题大小写格式化器的想法(标题大小写定义是大写每个单词的第一个字母),所以我更新了我的代码,包括它,不需要任何选项。
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 使用数组自定义对象
- 使用带有自定义对象作为属性的jQuery.extend时出现意外行为
- 在JavaScript中定义自定义对象和函数(第2部分)
- 在JavaScript中定义自定义对象和函数
- 如何获得一个动态增长的自定义对象的Javascript数组
- Angular Schema Form-自定义对象编辑器
- 使用JavaScript将自定义对象添加到文档中
- 序列化具有方法的自定义对象.序列化后删除的方法-要采取的步骤
- 正在将img/文件上载到Quickbloxx自定义对象API
- 生成自定义对象调用
- 将自定义对象的猫鼬 PUT 实现到复杂架构中时出现问题
- 如何在 Javascript 中制作自定义对象数组
- 使 HTML 元素从自定义对象继承事件
- Javascript错误消息,自定义对象表示
- 在自定义对象上使用 jQuery 等选择器
- 自定义对象内的范围问题
- 自定义对象中的变量范围
- 如何使用Visual Force和Javascript在Salesforce中的自定义对象中获取自定义字段值
- 自定义对象/类型 Javascript