在Kendo网格中的工具栏上的Kendo ui-Menu中循环复选框

时间:2017-05-12 22:56:25

标签: angularjs kendo-ui kendo-grid

我正在尝试在Angular的Kendo Grid工具栏中实现一个Kendo ui-Menu。我在菜单上手动创建列列表。单击复选框时,我可以显示/隐藏列。当菜单打开时,我需要遍历复选框,以便我可以根据网格中每列上设置的选项设置选中/取消选中。问题是我不知道如何访问子节点的check / unchecked。

下面的代码获取所有子节点,但我不知道如何访问其已检查/未检查的值:

var columns = $(e.item).find(".k-item:not(:has(.k-group))");

我有Dojo设置,其中检查/取消选中有效,但我不知道如何从'onOpen'访问它们。任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

首先,您必须找到checkbox元素,然后您可以使用.prop("checked")方法获取复选框选中的值。

所以,如果你,例如。想要在打开的菜单上切换复选框值,您可以使用:

$scope.onOpen = function(e) {
    var checkboxes = $(e.item).find(".k-item:not(:has(.k-group))").find("input[type='checkbox']");
    for(var i = 0; i < checkboxes.length; i++){
        var checkbox = $(checkboxes[i]);
        checkbox.prop("checked", !checkbox.prop("checked"));
    }
} 

更新了道场:http://dojo.telerik.com/OnAXI

答案 1 :(得分:0)

感谢JarosławKończak让我走上了正确的道路,我最终能够使用我的列上的“隐藏属性”将复选框设置为选中或通过改变他的建议进行检查:< / p>

  $scope.onOpen = function(e) {
  var checkboxes = $(e.item).find(".k-item:not(:has(.k-group))").find("input[type='checkbox']");
  for (var i = 0; i < checkboxes.length; i++) {
      var checkbox = $(checkboxes[i]);
      if (checkbox.prop("checked")) {
          var fieldData = checkbox.data("field");
          var columns = $scope.SearchGrid.columns;
          for (var x = 0; x < columns.length; x++) {
              if (columns[x].field == fieldData) {
                  if (columns[x].hidden == true) {
                      checkbox.prop("checked", false);
                  }
              }
          }
      }
  }

}

这是一个有效的Dojo,其中包含动态创建的列,而不是“手动”列列表。