我有一个剑道网格,根据以下条件可以编辑字段:
//var isEditable= some condition
fields: {
Id: { type: "int", editable: false },
Amount: {type: "number", editable: isEditable},
}
我希望获得所有可编辑的单元格,并在显示之前对其进行操作。
目前我正在使用dataBound事件迭代行和单元格并找到所需的单元格
dataBound: function(e){
var rows = e.sender.tbody.children();
for (var j = 0; j < rows.length; j++) {
var row = $(rows[j]);
if (isEditable){
var cell1 = row.children().eq("hardcoded index");
var cell2 = row.children().eq("hardcoded index 2");
var cell3 = row.children().eq("hardcoded index 3");
......
......
// perform action
}
}
有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
由于您希望在显示之前对可编辑元素执行某些操作,因此我将使用模板来完成此操作。下面是一个示例,如果Amount字段可编辑,则将背景颜色变为红色:
<script id="editableTemplate" type="text/x-kendo-template">
#if (Editable) { #
<div style='background-color:red'>#=Amount#</div>
# } else { #
<div>#=Amount#</div>
# } #
<script>
另一种解决方法是通过将模板包装在函数中来获取参数:
function foo(isEdit, value) {
if(isEdit){
return "<div style='background-color:red'>" + value + "</div>";
} else {
return "<div>" + value + "</div>";
}
}
然后,您可以将列模板设置为:
{
field: "Amount",
type: "number",
template: function(data) {
return kendo.template("#=foo(isEditable, Amount)#")
},
editable: isEditable
}