2015-11-12 8 views
0

На уровне иерархии transaction мне нужен доступ к значению из данных #grid. Может ли это быть передано в качестве параметра или я должен пересечь DOM с помощью jQuery?Многоуровневая иерархия сетки - данные бабушки и дедушки

$(document).ready(function() { 
    var element = $("#grid").kendoGrid({ 
     ... 
     detailInit: summary 
    }); 
}); 

function summary(e) { 
    $("<div/>").appendTo(e.detailCell).kendoGrid({ 
     ... 
     detailInit: transactions 
    }); 
} 

function tranasctions(e) { 
    $("<div/>").appendTo(e.detailCell).kendoGrid({ 
     ... 
    }); 
} 

ответ

1

AFAIK, то detailInit события дает только masterRow свойство в своем первом объекте аргумента, который стоит для родительского расширена ряда. Так что я боюсь, вам придется траверс это. То, что я предлагаю, чтобы сохранить masterRow в атрибуте data во второй детализации сетке, чтобы найти его в последнем уровне:

Второй сетка уровня:

$(e.detailCell).kendoGrid({ 
    // settings ... 
}).data("master", e.masterRow); 

Это создаст атрибут данных с именем " мастер "с первой расширенной строкой. Затем на третьем уровне вы можете получить его с помощью:

var root = $(e.masterRow).closest(".k-detail-cell").data("master"); 

Demo

+0

Большое спасибо за ответ - очень полезно. Я внесла изменения в вашу демоверсию, чтобы включить вкладку http://dojo.telerik.com/UwuXi/3. Теперь 'root' возвращает' undefined'. Любая идея почему? – user1405195

+0

@ user1405195, потому что вы изменили элемент, созданный последней сеткой, в данном случае элементом '.people'. Вы также должны изменить источник «root». http://dojo.telerik.com/UwuXi/4 – DontVoteMeDown