从Kendo网格检索数据时如何排除列?

时间:2019-01-25 18:18:39

标签: javascript c# kendo-ui

我正在使用Javascript中的此调用从Kendo网格中提取所有数据:

var data = JSON.stringify($(".k-grid").data("kendoGrid").dataSource.data())

它为这些记录返回C#类中的所有属性。我在Kendo演示中没有显示三个属性,但是将它们返回到此调用中(并随后发送到“导出为CSV”调用中)。

如何从此数据调用中排除这些列?

编辑:

在@DontVoteMeDown的示例之后,我尝试使用此功能:

            function removeKeys(data) {
            let excludedKeys = ['InvoiceId', 'IsOk', 'ErrorMessage'],
                newData = data.map((item) => {
                    let newObj = {};

                    Object.keys(item).forEach(key => {
                        if (excludedKeys.indexOf(key) == -1) {
                            newObj[key] = item[key];
                        }
                    });

                    return newObj;
                });
        }

但是,在控制台调试器中,我得到了一个错误。

当我这样调用序列时,会得到一个未定义的“数据”:

    var tableData = $(".k-grid").data("kendoGrid").dataSource.data();

    var dataChop = removeKeys(tableData);

    var data = JSON.stringify(dataChop);

当我按此顺序调用时,出现错误消息“ data.map不是函数”:

    var tableData = $(".k-grid").data("kendoGrid").dataSource.data();

    var dataFull = JSON.stringify(tableData);

    var data = removeKeys(dataFull);

我应该如何调用此映射函数?

1 个答案:

答案 0 :(得分:0)

@ZorgoZ建议的简单实现:

let data = [{
  a: 1,
  b: 2,
  c: 3
}, {
  a: 4,
  b: 5,
  c: 6
}];

let excludedKeys = ['c'],
    newData = data.map((item) => {
      let newObj = {};
          
      Object.keys(item).forEach(key => {
          if (excludedKeys.indexOf(key) == -1) {
              newObj[key] = item[key];
          }
      });
   
      return newObj;
   });
   
console.log(newData);

成为数据您的dataSource.data()