【问题标题】:KendoUI grid fire update method when changing the hidden field value更改隐藏字段值时的Kendo UI网格火更新方法
【发布时间】:2018-04-09 06:32:29
【问题描述】:

由于某种原因,我需要在使用 KendoUI 网格时定义一个隐藏列:

    var fields = {
        ID: { type: "string", editable: true, nullable: false },
        HideID : { type: "string", editable: false, nullable: false ,hidden: true },
        Name: { type: "string", editable: true, nullable: false }
    };
    var ColumnsDefine = [
        { field: "ID", title: "ID", width: 100 },
        { field: "HideID", hidden: true },
        { field: "Name", title: "Name", width: 100 }
    ];

我使用 JavaScript(操作 dataItem)更改了 HideID 列值,而不编辑网格的记录。

更改隐藏字段的 JavaScript 代码如下所示(在命令单击函数中)

    var tr = $(e.target).closest("tr");
        var data = this.dataItem(tr);            
        data.HideID = "123";

现在的问题是当我单击默认更新按钮时,没有调用后台更新方法,因为我没有对任何可见列进行更改。但是,如果我修改任何可见列并单击更新,HideID 和另一个字段都会在后台成功更新。

如何通知 KendoUI 网格其数据已更改并通过单击更新按钮触发更新方法?

【问题讨论】:

  • 您能分享一下更改HideID 列的代码吗?
  • @Joe Glover 嗨,我在下面添加了相关代码

标签: javascript kendo-ui


【解决方案1】:

您的网格dataItem 将是kendo.data.ObservableObject;你需要设置你的HideID 属性,使剑道框架可以看到变化,使用它的set() 方法:

var tr = $(e.target).closest("tr");
    var data = this.dataItem(tr);            
    data.set("HideID","123");

完成此操作后,您应该会发现它的 dirty 字段设置为 true。这会向数据源发出信号,表明该对象发生了需要通过update 方法保存的更改。

另请参阅这篇文章,它很好地解释了 observableObject 如何用于绑定https://docs.telerik.com/kendo-ui/framework/mvvm/observableobject#set-field-values

希望这会有所帮助!

【讨论】:

  • 非常感谢!无论如何在 data.set() 方法之后将自定义命令按钮标记为已编辑?我发现 $(currentRow).find(".k-grid-CustomCommand span").addClass("k-dirty");不再工作了
  • 不用担心,很高兴解决了您的问题。您的代码 sn-p 取决于网格可能未呈现的按钮内的跨度。如果您设置iconClass,它将生成一个跨度,也许您可​​以尝试将其设置为一个不存在的类以获得一个跨度,然后您可以将k-dirty类附加到?
  • 谢谢!我会这样尝试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
相关资源
最近更新 更多