我有一个按钮,单击该按钮时,我会将一些数据行值推送到数组中。我根据其选定/未选定状态交换文本。这很好用,但是如果用户通过数据网格进行分页或过滤它,选定的值仍然存在,但按钮文本会变回其“添加”状态。这是我的按钮代码:
command: [
{
name: "Select", template: "<a href='\\\#' class='k-button k-button-icontext btn-destroy k-grid-Select'>#= this.Selected === true ? 'Remove' : 'Add' #</a>",
click: function (e) {
var curBtn = $(e.target);
var tr = $(e.target).closest("tr"); // get the current table row (tr)
var data = this.dataItem(tr);
console.log(data);
var selected = data.Selected;
if (selected == false || selected == undefined) {
data.Selected = true;
curBtn.html('remove');
}
else {
data.Selected = false;
curBtn.html('add');
}
console.log(curBtn);
data.refresh();
}
}],
我为模板尝试了这个,但不断收到无效的模板错误。我相信造成这种情况的原因是我无法直接访问数据单元之外的项目?
template: "<a href='\\\#' class='k-button k-button-icontext btn-destroy k-grid-Select'>#= Selected == true ? Remove : Add #</a>"
任何帮助都会像往常一样不胜感激!!感谢和快乐的编码!
编辑:
这是一个小提琴:http: //jsfiddle.net/rKBZq/27/
这非常代表我正在尝试做的事情。数据是本地的,就像在这个演示中一样。所以基本上,根据行的选定属性,我想将按钮的文本更改为“添加”或“删除”,并通过单击操作适当地更新行和数据......
我观察到的事情是当console.log(data) 选择的值实际上更新时......但是,现在是网格单元。这很好,因为无论如何我通常都会隐藏它......所以我已经进入模板的 this.Selected 是否有可能从表格行而不是支持数据中提取?- 编辑:添加 this.refresh() 也会更新表格,但这样做时按钮不会重新呈现......我更新了命令按钮以反映它,并且它在分页或过滤时确实保存......所以这个归结为当数据执行时调用刷新时按钮为什么不刷新/重新呈现?
另一个观察显然是我不应该做 curBtn.html('Add') 如果这有效......我希望随着数据的变化相应地交换按钮的状态......