【问题标题】:Kendo grid datasource not getting updated when adding or editing records in child grids在子网格中添加或编辑记录时,Kendo 网格数据源未更新
【发布时间】:2016-05-09 19:04:16
【问题描述】:

如果我尝试在子网格中添加或更新网格记录,则网格正在更新,但网格数据源没有更新。我试图从视图中获取网格数据源,该视图也没有更新的数据。谁能告诉我以下代码有什么问题

<div id="Grid"></div>
<script type="text/javascript">
   var data = [{
  "BUCode": 6,
  "BUCodeName": "PrinterPix.com",
  "ClientCode": 1,
  "CreatedByCode": 1,
  "CreatedByName": "Bangalore Team",
  "DisplayCode": null,
  "IsActive": false,
  "ParentProductCode": 115,
  "ParentboProductCode": 115,
  "WorkCenterCode": 20,
  "WorkCenterName": "Print",
  "listRoutingPlanActivity": [{
    "ActivityCode": 12,
    "ActivityDisplayCode": null,
    "ActivityName": "Cut",
    "IsActive": false,
    "MachineHours": 0,
    "MachineSetupHours": 0,
    "StandardMinutes": 0,
    "WorkCenterCode": 20,
    "SequenceNumber": 1,
    "listActivityMaterial": [{
      "ActivityCode": 12,
      "Code": 0,
      "ActivityName": "Cut",
      "BUCode": 6,
      "BUCodeName": "PrinterPix.com",
      "ChildProductCode": 0,
      "ChildboProductCode": null,
      "ClientCode": 1,
      "CreatedByCode": 0,
      "IsActive": false,
      "ParentProductCode": 0,
      "ParentboProductCode": null,
      "ChildCategoryCode": 128,
      "ChildCategoryName": "_Raw Materials_",
      "ParentCategoryCode": 0,
      "ParentCategoryName": "",
      "Quantity": 0,
      "WorkCenterCode": 20
    }],
    "Code": 0,
    "OutputProductCode": 0,
    "OutPutBoProduct": ""
  }]
}, {
  "BUCode": 6,
  "BUCodeName": "PrinterPix.com",
  "ClientCode": 1,
  "CreatedByCode": 1,
  "CreatedByName": "Bangalore Team",
  "DisplayCode": null,
  "IsActive": false,
  "ParentProductCode": 115,
  "ParentboProductCode": 115,
  "WorkCenterCode": 23,
  "WorkCenterName": "Streatch",
  "listRoutingPlanActivity": [{
    "ActivityCode": 15,
    "ActivityDisplayCode": null,
    "ActivityName": "Stretched",
    "IsActive": false,
    "MachineHours": 0,
    "MachineSetupHours": 0,
    "StandardMinutes": 0,
    "WorkCenterCode": 23,
    "SequenceNumber": 2,
    "listActivityMaterial": [{
      "ActivityCode": 15,
      "Code": 0,
      "ActivityName": "Stretched",
      "BUCode": 6,
      "BUCodeName": "PrinterPix.com",
      "ChildProductCode": 0,
      "ChildboProductCode": null,
      "ClientCode": 1,
      "CreatedByCode": 0,
      "IsActive": false,
      "ParentProductCode": 0,
      "ParentboProductCode": null,
      "ChildCategoryCode": 128,
      "ChildCategoryName": "_Raw Materials_",
      "ParentCategoryCode": 0,
      "ParentCategoryName": "",
      "Quantity": 0,
      "WorkCenterCode": 23
    }],
    "Code": 0,
    "OutputProductCode": 0,
    "OutPutBoProduct": ""
  }]
}, {
  "BUCode": 6,
  "BUCodeName": "PrinterPix.com",
  "ClientCode": 1,
  "CreatedByCode": 1,
  "CreatedByName": "Bangalore Team",
  "DisplayCode": null,
  "IsActive": false,
  "ParentProductCode": 115,
  "ParentboProductCode": 115,
  "WorkCenterCode": 34,
  "WorkCenterName": "Sticking",
  "listRoutingPlanActivity": [{
    "ActivityCode": 66,
    "ActivityDisplayCode": null,
    "ActivityName": "Sticking",
    "IsActive": false,
    "MachineHours": 0,
    "MachineSetupHours": 0,
    "StandardMinutes": 0,
    "WorkCenterCode": 34,
    "SequenceNumber": 3,
    "listActivityMaterial": [{
      "ActivityCode": 66,
      "Code": 0,
      "ActivityName": "Sticking",
      "BUCode": 6,
      "BUCodeName": "PrinterPix.com",
      "ChildProductCode": 0,
      "ChildboProductCode": null,
      "ClientCode": 1,
      "CreatedByCode": 0,
      "IsActive": false,
      "ParentProductCode": 0,
      "ParentboProductCode": null,
      "ChildCategoryCode": 128,
      "ChildCategoryName": "_Raw Materials_",
      "ParentCategoryCode": 0,
      "ParentCategoryName": "",
      "Quantity": 0,
      "WorkCenterCode": 34
    }],
    "Code": 0,
    "OutputProductCode": 0,
    "OutPutBoProduct": ""
  }]
}];
var gridDataSource = new kendo.data.DataSource({

  transport: {
    read: function(options) {
      options.success(data);
    }
  },
  schema: {
    model: {
      id: "WorkCenterCode",
      fields: {
        WorkCenterCode: {
          editable: false
        },
        WorkCenterName: {
          editable: false,
        }
      }
    }
  },
});



$("#Grid").kendoGrid({
  autoBind:true,
dataSource: gridDataSource,
sortable: false,
pageable: false,
scrollable: true,
// detailInit: secondGridInit,                  
columns: [{
  field: "WorkCenterName",
  title: "Work Center Name"
}]
})

});


function secondGridInit(e) {

    console.log(JSON.stringify(e.data.listRoutingPlanActivity));
    var findByID = function(id) {
      return e.data.listRoutingPlanActivity.find(function(item) {
        return item.ActivityCode == id;
      });
    };
    $("<div id='activity' class='activity'/>").appendTo(e.detailCell).kendoGrid({
          dataSource: {
            transport: {
              read: function(options) {
                options.success(e.data.listRoutingPlanActivity.toJSON());
              },
              update: function(options) {
                e.data.dirty = true;
                options.success();
              },
            },
            schema: {
              model: {
                id: "ActivityCode",
                fields: {
                  WorkCenterCode: {
                    editable: false
                  },
                  ActivityCode: {
                    editable: false
                  },
                  ActivityName: {
                    editable: false
                  },
                  IsActive: {
                    editable: false,
                    defaultValue: true
                  },
                  StandardMinutes: {
                    type: "number"
                  },
                  MachineSetupHours: {
                    type: "number"
                  },
                  MachineHours: {
                    type: "number"
                  },
                }
              }
            }
          },
          scrollable: true,
          editable: "popup",
          columns: [{
              field: "ActivityName",
              title: "Activity"
            }, {
              field: "StandardMinutes",
              title: "Standard Time"
            }, {
              field: "MachineSetupHours",
              title: "Machine Setup Time"
            }, {
              field: "MachineHours",
              title: "Machine Hours"
            }, {
              command: "edit"
            },

          ]
        }
</script>

【问题讨论】:

    标签: jquery kendo-ui kendo-grid kendo-datasource


    【解决方案1】:

    当您初始化子网格时,它有自己的数据源,由父网格和它的不同对象组成,而不参考父数据源。

    因此,如果您需要更新数据,只需检索父行的子网格数据源并在其中搜索。

    【讨论】:

      【解决方案2】:

      我也有这个问题。当我们更改 kendo 网格中的某些数据以在 UI 上显示时,仅 html 更改而不更改数据源。 因此,我们在 grid html 中所做的更改也必须同样在 dataSource 中进行。 喜欢这个

      $("#grid").data("kendoGrid").dataSource.data()[i - 1].fclty_cd = faculty; // dataSource changes
      $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty); // html changes
      

      【讨论】:

      • 你能告诉我哪个事件最适合处理这段代码吗?
      • 我是在外部教师下拉更改中进行的,您可以根据要求或数据绑定事件进行操作,例如 dataBound: setTimeout(configureGridProperties, or dataBound: function () { setTimeout(configureGridProperties, 1) ; },
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      相关资源
      最近更新 更多