有可能有一个wijgrid细胞类型的对象
Is it possible to have a cell of type object in a wijgrid?
我使用一个KnockOut可观察数组来填充wijgrid。在wijgrid中,我想使用JavaScript对象作为一些单元格的值。不幸的是,wijmo似乎在自己的模型中将对象转换为字符串。
请看这个例子。我想在表中显示车主名称,但我还需要保留id(和模型数据结构)。
KnockOut ViewModel
var someData =[ { AssetCode: "Truck 5",
Owner: {
id: 1,
name: 'Pete'},
VIN: "T3SN2ADN",
Odo: 232109,
TimeStamp: "2012-07-21T09:13:12Z"},
{ AssetCode: "Car 8",
Owner: {
id: 3,
name: 'Brian'},
VIN: "COFAQ211",
Odo: 433299,
TimeStamp: "2012-07-17T15:34:54Z"}];
function ViewModel() {
var self = this;
self.gridData = ko.observableArray(someData);
}
ko.applyBindings(new ViewModel());
wijgrid
<table id="t1" data-bind="wijgrid: {
data: gridData,
columns: [
{ headerText: 'Asset Code', dataKey: 'AssetCode', dataType: 'string'},
{ headerText: 'Owner name', dataKey: 'Owner'}, <!-- PROBLEM LINE -->
{ headerText: 'VIN', dataKey: 'VIN', dataType: 'string' },
{ headerText: 'Odometer', dateKey: 'Odo', dataType: 'number' },
{ headerText: 'Time', dataKey: 'TimeStamp', dataType: 'datetime', dataFormatString: timePattern }
]}"></table>
我试过:
- 标准KnockOut方法:
{ headerText: 'Owner name', dataKey: 'Owner.name'}
- 创建自定义cellFormatter:
{ headerText: 'Owner name', dataKey: 'Owner', cellFormatter: MY_FORMATTER}
我已经尝试了几乎所有我能想到的让它工作,但wijmo似乎很僵硬....
此外,当我在Chrome中调试时,它看起来好像wijmo在任何格式之前将对象转换为自己的模型中的字符串。这不是很有用。
Edit -我们使用的是Wijmo 2.3.9。我们在使用Wijmo 3时遇到了性能问题。*到目前为止,所以升级不是迫在眉睫。
您可以通过处理cellStyleFormatter将自定义值设置为任何单元格(或者在您的情况下显示车主名称),如下所示:
cellStyleFormatter: function (args) {
//check for specific column and header row
if (args.column.headerText == "Owner name" && args.row.dataRowIndex >= 0) {
//set the custom value to cell i.e. vehicle owner name
args.$cell.text(args.row.data.Owner.name);
}
}
有关CellStyleFormatter的更多信息,请参阅:http://wijmo.com/wiki/index.php/Grid#cellStyleFormatter
好的,事实证明,您可以使用cellFormatter
获得单元格值作为对象…要使其工作,不要指定dataKey
属性。以下是修改后的代码:
<table id="t1" data-bind="wijgrid: {
data: gridData,
columns: [
{ headerText: 'Asset Code', dataKey: 'AssetCode', dataType: 'string'},
{ headerText: 'Owner name', cellFormatter: MY_FORMATTER}, <!-- FIXED LINE -->
{ headerText: 'VIN', dataKey: 'VIN', dataType: 'string' },
{ headerText: 'Odometer', dateKey: 'Odo', dataType: 'number' },
{ headerText: 'Time', dataKey: 'TimeStamp', dataType: 'datetime', dataFormatString: timePattern }
]}"></table>
和下面的JS:
var MY_FORMATTER = function(args) {
if (args.row.data && args.row.dataRowIndex >= 0) {
args.formattedValue = args.row.data.Owner.name;
}
};
相关文章:
- 字符串对象类型或基元类型也是如此
- 如何在dojo中查询对象类型
- 对象类型scrollTo
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- JavaScript:创建新对象类型的方法
- 如何获取对象类型
- FormData()只发送对象类型的多文件
- 获取对象类型
- 依赖对象类型检查Javascript似乎是多余的
- 访问javascript中对象类型的数组成员
- 比较对象类型时是否需要第三个=
- 如何在 Google 闭包编译器中指定对象类型的@param @return
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- Javascript 空对象类型
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 在下拉列表中使用多个对象类型为数据网格提供筛选
- 为什么 String.prototype 中的“this”指的是对象类型,而不是字符串类型
- 自定义对象/类型 Javascript
- 在 Javascript 中获取对象类型的名称
- 两种 JavaScript 对象类型之间的差异