kendo bind HTML elements to grid selected row/dataItem

你说的曾经没有我的故事 提交于 2019-12-22 10:43:52

问题


I have the following situation (using KendoUI):

I have a grid binded to a datasource. When I select a row in the grid I invoke its "change" event to get the selected dataItem e show its values through other HTML elements.

Something like the following:

$("grid-element").kendoGrid({
    change: setElements
});

function setElements() {
    var grid = $("#grid-element").data("kendoGrid");
    var selectedItem = grid.dataItem(grid.select());

    $("#span-field1").text(selectedItem.field1);
    $("#span-field2").text(selectedItem.field2);
    $("#span-field3").text(selectedItem.field3);
}

My question is: is it possibile to achieve the same through MVVM or a better KendoUI model binding solution?


回答1:


So far I have found the following solution:

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridSelectedItem: null,

    _field1: function() { 
        return this.get("gridSelectedItem.field1"); 
    },
    _field2: function() { 
        return this.get("gridSelectedItem.field2"); 
    }
});

$("#grid-element").kendoGrid({
    change: function(e) {
        var selectedItem = this.dataItem(this.select());
        vm.set("gridSelectedItem", selectedItem);
    }
});


=== HTML ===
<span data-bind="text: _field1"></span>
<span data-bind="text: _field2"></span>

Is there a better way?




回答2:


Indeed there you are on the right track,

Here is what I can suggest you to try:

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridSelectedItem: null    
});

$("#grid-element").kendoGrid({
    change: function(e) {
        var selectedItem = this.dataItem(this.select());
        vm.set("gridSelectedItem", selectedItem);
    }
});


=== HTML ===
<span data-bind="text: gridSelectedItem.field1"></span>
<span data-bind="text: gridSelectedItem.field2"></span>

It should be slightly more compact.



来源:https://stackoverflow.com/questions/13802068/kendo-bind-html-elements-to-grid-selected-row-dataitem

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!