首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wijgrid中是否可能有一个类型为对象的单元格?

在wijgrid中是否可能有一个类型为对象的单元格?
EN

Stack Overflow用户
提问于 2013-04-23 06:23:52
回答 2查看 855关注 0票数 1

我使用一个KnockOut可观察数组来填充wijgrid。在wijgrid中,我希望使用JavaScript对象作为某些单元格的值。不幸的是,似乎wijmo在自己的模型中将对象转换为字符串。

请给我一个看看这个例子。我想在表中显示车主的名字,但我也需要保留id (和模型数据结构)。

KnockOut ViewModel

代码语言:javascript
复制
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

代码语言:javascript
复制
<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已经将对象转换为其自身模型中的字符串。这不是很有用..。

编辑-我们正在使用Wijmo2.3.9。到目前为止,我们的Wijmo 3还存在性能问题,因此升级并不迫在眉睫。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 03:06:28

好的,结果是您可以使用cellFormatter作为对象获取单元格值.要使此操作正常,不需要指定dataKey属性。以下是经修订的守则:

代码语言:javascript
复制
<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>

和下列联合来文:

代码语言:javascript
复制
var MY_FORMATTER = function(args) {
  if (args.row.data && args.row.dataRowIndex >= 0) {
    args.formattedValue = args.row.data.Owner.name;
  } 
};
票数 0
EN

Stack Overflow用户

发布于 2013-05-01 06:59:57

通过这样处理cellStyleFormatter,您可以将自定义值设置为任何单元格(或在您的情况下显示车主名称):

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16162378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档