【问题标题】:Conditionally expand row in kendo grid有条件地扩展剑道网格中的行
【发布时间】:2015-07-13 23:44:28
【问题描述】:

在我的剑道网格中,我试图检查我的列字段之一是真还是假。如果为真,则行应展开,如果为假,则行应保持折叠状态。我对列的代码定义是:

{
  field: "Comment",
  title: txt.TXT_COMMENT,
  template: '<input type="checkbox" #= Comment ? "checked" : "" # disabled="false" ></input>',
},

我在dataBound中的代码条件用于检查是否有数据:

dataBound: function (e) {
  var data = this.dataItem;
  if (data.Comment == 1) {
    this.expandRow(this.tbody.find("tr.k-master-row"));
  }
  f_OnDataBound(e);
}

感谢您的帮助!

【问题讨论】:

  • 乍一看,您的数据绑定函数将不起作用,因为this 没有dataItem。你能制作一个说明你的问题的小提琴吗?我可以看到这行不通,但代码太少,我无法提供帮助
  • 不幸的是我的代码太大,从本地数据库获取数据:/

标签: javascript jquery kendo-ui kendo-grid


【解决方案1】:

通过使用数据绑定事件,您的方向是正确的。之后您需要做的是,遍历所有行并检查特定模型属性并扩展或不扩展该特定行。

var grid = $("#grid").data("kendoGrid");       
var data = grid.dataSource.data();
var len = data.length;

for(var i = 0; i < len; i++) {
    var row = data[i];
    if(row.Comment == '1') { // checks for the value of the Comment property
        grid.expandRow("tr[data-uid='" + row.uid + "']"); // expands the row with the specific uid
    }
}

我对此进行了测试并且效果很好。我不知道 Comment 属性上有什么,如果需要,这取决于你来控制和调整 javascript 函数。

编辑

我创建了 a fiddle 来演示上述策略。在示例中,dataBound 函数查找属性“name”,如果它是“Sally”,则展开该行

【讨论】:

  • 只有一个小问题,它停在第一个结果上,只扩展包含评论的第一行,我该如何处理?
  • 你是什么意思,“停在第一个结果”?它是否只扩展Comment == 1 而不是其他的第一行?奇怪,这没有合乎逻辑的理由。这是另一个fiddle,表明它适用于任何数量的记录。那一定是别的东西
  • 我们可以在Stack Overflow Chat继续这个讨论吗?
  • 你能邀请我吗?我不能邀请你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多