如何将表列字段组合到kendo网格中的单列

时间:2016-06-15 09:26:45

标签: kendo-ui kendo-grid

我想将表列字段与kendo-grid

中的单列组合
  { field: 'name', title: 'Name' },
  { field: 'address', title: 'Address'},
  { field: 'phoneNumber', title: 'Phone Number' },
  { field: 'remarks', title: 'Remarks' },
  { command: ['edit', 'destroy'] }];

字段:'地址'是一个对象。

地址:{ blockNo:' xx', 城市:'新加坡', 国家:'新加坡', floorNo:' xx', id:' xx', zipCode:' xxxxx', streetName:' xx', unitNo:' xx', }

所以,我需要结合在kendo-grid中的单个列中显示。

EG。 Blk-xx,#xx-xx,Singapore,xxxxx - >在一栏中。

2 个答案:

答案 0 :(得分:2)

另一种方法是使用外部模板或函数来执行此操作(这是我首选的解决方案,因为它更易于维护)

我已经调整了我在之前的答案中使用的演示,以突出显示可能有用的方法。

Templating Address Object

我所做的只是将extract模板化为这样的函数:

 function generateAddress(data) {
   var retString = '';

   if (data !== undefined && data !== 'undefined' && data !== null) {
     retString += '<p><strong>Block No:</strong> ' + data.blockNo +
       '<br/><strong>Street Name:</strong>' + data.streetName +
       '<br/><strong>Floor No:</strong>' + data.floorNo +
       '<br/><strong>City:</strong>' + data.city +
       '<br/><strong>Zip Code::</strong>' + data.zipCode +
       '<br/><strong>Country:</strong>' + data.country + '</p>';
   } else {
     retString = '<p>N/A</p>';
   }


   return retString;
 }

然后将您的列中的模板签名更改为以下内容:

{field: "address", width:"200px", title:"Address",
  template:"#=generateAddress(data.address)#" }

这样我们只需将对象传递给函数,并且可以在函数中执行所需的任何更改,注意:非常有用,如果您在代码中的很多地方使用它。

它还会执行一个简单的检查以查看该项目是否存在,如果不存在,那么它会将一个占位符文本放在其位置。

我还在external模板的加载中添加了您也可以查看。

就我个人而言,我更喜欢第一种选择,但这些是您将来可以看到的一些替代方法。

NB:很高兴你的同事帮助你解决了这个问题。

答案 1 :(得分:1)

我的同事得到了正确答案:)

答案是:

var schema = [
      { field: 'name', title: 'Name' },
      { field: 'address', title: 'Address', template: 'BLK-#=address.blockNo+", "+address.streetName+", \\#"+address.floorNo+"-"+address.unitNo+ ", S-"+address.pinCode+", "+address.city+", "+address.country#'},
      { field: 'billingAddress', title: 'Billing Address', template: 'BLK-#=billingAddress.blockNo+", "+billingAddress.streetName+", \\#"+billingAddress.floorNo+"-"+billingAddress.unitNo+ ", S-"+billingAddress.pinCode+", "+billingAddress.city+", "+billingAddress.country#'},
      { field: 'phoneNo', title: 'Phone Number'},
      { field: 'fax', title: 'Fax'},
      { field: 'email', title: 'Email'},
      { field: 'contactPerson', title: 'Contact Person'},
      { field: 'remarks', title: 'Remarks' },
      { command: ['edit', 'destroy'] }];

例如:BLK-xx,xx Street,#XX-XX,S-XXXXX,xxx,xxx

非常感谢你,.. 我只是为知识共享添加答案.. :)