Kendo Grid Child - >使用CRUD工具栏

时间:2015-12-02 08:25:25

标签: javascript asp.net-mvc kendo-grid

我的问题是我有分层网格(Master和Child)让我说我有一个部门网格它包含员工网格列表,他们都使用相同的数据源。 这是我的GridChild代码:

function detailInit (e){
    var msterRow =  e.sender.items().index(e.masterRow).toString();
    var grid = $("<div id='childGrid"+msterRow+"' 
              class=childGrid'/>").appendTo(e.detailCell).kendoGrid({
    data: e.data.DeptEmployees,
    schema: {
        model: {  fields: { foo: {--skip--}, bar: {--skip--} } }
    },
    toolbar: ["create", "cancel", "save"],
    editable: "popup",
    columns: [ --skip--]
    save: function(e){
        ajaxUpdateDepartment(msterRow, this.dataSource.data());
    }
}) 

正如您所见,我使用data: e.data.DeptEmployees,作为子数据源来获取数据。 现在我已经知道如何更新子数据源?

  

我的尝试:

     
      
  • 我添加了孩子dataSource.transport进行更新,我的子网格一直在加载。
  •   
  • 因此,我最终配置了save: function (e),只是发送当前子项的所有数据源,但弹出式编辑器根本没有关闭。而且我很难刷新子数据源。
  •   
  • 我也尝试将我的Master和Child Grid转换为ASP Razor 但是没有明确的例子,我怎么能在后端处理它,而且我的子网格包含下拉网格,所以这将是一个很大的重做。我也不知道如何通过它传递自定义参数
  •   

我很绝望,除了this one之外,我找不到任何有用的参考资料。但它使用odata,并且我没有子ID 用作参考,因为我只使用我在用户事件中检索的列表。

请帮忙:&#39;(我为这个花了太多时间。

1 个答案:

答案 0 :(得分:0)

解决方案是定义传输属性,为了从master获取数据,我只需要定义数据并将其转换为Jason。

看看这些代码:

function detailInit (e){
    var msterRow =  e.sender.items().index(e.masterRow).toString();
    var grid = $("<div id='childGrid"+msterRow+"' 
              class=childGrid'/>").appendTo(e.detailCell).kendoGrid({
    //data: e.data.ChildDetails,
    transport: {
         read: function (o) {
               console.log("child read");
               var data = e.data.ChildDetails.toJSON();
               o.success(data);
         },
         update: function (o) {
               console.log("child update");
               var data = o.data,
               arentItem = findByID(data.id);
               for (var field in data) {
                      if(!(field.indexOf("_") === 0)){
                           arentItem[field] = data[field];
                       }
                }
               e.data.dirty = true;
               saveChild(record, "@suffix", msterRow, "update");
               o.success();
          },
          destroy: function (o) {
               var parentItem = findByID(o.data.id);
               preventBinding = true;
               e.data.ChildDetails.results.remove(parentItem);
               o.success();
               saveChild(record, "@suffix", msterRow, "destroy");
          },
          create: function (o) {
                console.log("child create");
                var record = o.data;
                record.id = index;
                index++;
                saveChild(record, "@suffix", msterRow, "create");
                o.success(record);
           }
    },
    schema: {
        model: {  fields: { foo: {--skip--}, bar: {--skip--} } }
    },
    toolbar: ["create", "cancel", "save"],
    editable: "popup",
    columns: [ --skip--]
}

Here's the working dojo snippet