【问题标题】:How to dynamically change the values in the kendo ui grid如何动态更改剑道 ui 网格中的值
【发布时间】:2013-04-04 15:34:27
【问题描述】:

我正在使用剑道 ui 网格。在那我已经使用批处理模式来保存值。如果我在一行中更改记录,则相应行的值也将更改,当我们单击保存时,两个字段都将保存到数据库中。

例如。我有一个像这样的网格:

  Integer    Value
   1         First
   2         Second
   3         Third
   4         Fourth

如果我将 1 的值更改为 4,那么 4 将被更改,并且值也会动态更改。我的意思是我想在这里交换 1 和 4。我也可以改变 剩下的所有字段也是,但最后所有记录都必须保存到数据库中。我试过了

此代码将在网格更改功能中

 var grid = $('#grid').data("kendoGrid");
 var selectedRow = grid.select();
 var selectedRowIndex = selectedRow.index();
 console.log(selectedRowIndex);

 var firstItem = dataSource.data()[selectedRowIndex];

 var datalength = dataSource.data();
 for (var i = 0; i < datalength.length; i++)
   {
     var dataItem = datalength[i].id;
     if (dataItem == firstItem.get('id'))
       {                                
         var secondItem = dataSource.data()[i];                                
         secondItem.set('id', dataItem);                               
       }
   }

然后值正在更改,但值在更改后并未传递给控制器​​。

【问题讨论】:

    标签: jquery kendo-ui kendo-grid


    【解决方案1】:

    如果您想直接使用数据,则需要将更改的记录标记为脏记录。

     dataSource.data()[changedIndex].dirty = true;
     dataSource.sync();
    

    【讨论】:

    • 谢谢。我们能知道剑道ui网格的保存事件发生了什么变化吗?
    • 抱歉我没有关注你的问题?
    • @patcapozzi 很遗憾听到这个消息!你这么说是因为你不想得到错误,或者因为你只是复制和粘贴这两行而不是上下文,或者如果第一行失败或者 Kendo 框架改变了,你怎么能在第二行得到错误过去两年。分享一个我真的很想知道的小提琴!
    • 调用同步时收到错误消息。小提琴在这里fiddle.jshell.net/rhagerma/nqdhwpyj。在小提琴中,changeData 首先尝试使用stackoverflow.com/questions/13326316/… 更改数据(成功),然后尝试使用此答案更改数据。意识到这可能是由于图书馆的变化,但希望有人指出另一篇可以提供帮助的帖子。
    【解决方案2】:

    只需设置剑道网格中的数据值。

    $("#my_grid").data("kendoGrid").dataSource.data()[rowindex].columnName= newValue;

    在我的项目中,我通过下拉更改更改了我的 Kendo 网格行的值,列名 = fclty_cd。

    这是我写的:

     function onChange(e) {
        var fromContactNumber = parseFloat($('#fromContactNumber').val());
        var toContactNumber = parseFloat($('#toContactNumber').val());
        var length = $('#grid table tr[role=row]').length;
        var faculty = $('#ddl_Faculty').val();
        for (var i = 1; i < length; i++) {
            var num = parseFloat($($('#grid table tr[role=row]')[i]).find("td")[4].innerText);
            if (num >= fromContactNumber && num <= toContactNumber) {
                $("#grid").data("kendoGrid").dataSource.data()[i - 1].fclty_cd = faculty;
                $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty);
            }
        }
    }
    

    此行仅更改 UI 值: $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty);

    这一行改变了 Kendo 数据网格中的值: $("#my_grid").data("kendoGrid").dataSource.data()[rowindex].columnName=newValue;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 2013-06-16
      • 2019-11-07
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多