【问题标题】:Kendo UI Grid: How To Keep Custom Filter Row In Synch With Column Reordering And HidingKendo UI Grid:如何使自定义过滤器行与列重新排序和隐藏保持同步
【发布时间】:2013-07-19 08:37:37
【问题描述】:

如何使我的自定义过滤器行与列重新排序和列隐藏保持同步?我目前正在研究 Telerik kendo UI grid v2013.1.514。

代码如下:

var grid = $("#grid").kendoGrid({
    dataSource: {
        type: "odata",
        transport: {
            read: "http://demos.kendoui.com/service/Northwind.svc/Products"
        },
        pageSize: 15,
        serverPaging: true,
        serverSorting: true,
        serverFiltering: true
    },
    height: 450,
    reorderable: true,
    pageable: true,
    columns: [{ field: "ProductID"}, { field: "ProductName"}, { field: "UnitPrice"}]
});

var filterRow = $('<tr><td><input type="search" id="ProductIDSearchBox" value="EnterProductID"/></td>' +
     '<td><input type="search" id="ProductNameSearchDD" value="Enter ProductName"/></td>' +
     '<td><input type="search" id="UnitPriceSearchBox" value="Enter UnitPrice"/></td></tr>');
grid.data("kendoGrid").thead.append(filterRow);

请在此处查找示例:http://jsfiddle.net/WrqmD/4/。 只需拖放列标题,即可看到自定义过滤器行未重新排序!

编辑:

顺便说一句,此处描述了附加自定义过滤器的解决方案:http://www.kendoui.com/forums/kendo-ui-web/grid/grid-header-filtering-row-that-contains-1-element-for-each-column-in-grid-with-the-same-width.aspx

【问题讨论】:

    标签: grid kendo-ui


    【解决方案1】:

    在与 Telerik 支持人员进行了回复后,我想分享以下解决方案:

    1. 实现 columnReorder 事件将以下方法声明添加到网格选项。 Telerik Support 建议这样做。请找到一个有效的 JsFiddle 演示 here:

      columnReorder: function(e) {
        var selector = this.thead.find(".filterRow td"),
        source = selector.eq(e.oldIndex),
        dest = selector.eq(e.newIndex);
        source[e.oldIndex > e.newIndex ? "insertBefore" : "insertAfter"](dest);
      }
      
    2. 将自定义元素附加到原始标题元素。这是我自己的解决方案,因为列的重新排序和隐藏都是用相同的代码解决的。请找到一个有效的 JsFiddle 演示 here:

      var columns = grid.data("kendoGrid").columns;
      for(var i = 0; i < columns.length; i++) {
        var column = columns[i];
        var columnName = column.field;
        var columnHeader = $('div#grid th.k-header[data-field="' + columnName + '"]');
        if(undefined != columnHeader[0]) {
          var fieldValue = $('<input type="text" style="display:block;">');
          fieldValue.val(columnName);
          fieldValue.click(function(evt) {
            evt.stopPropagation();
            $(evt.target).focus().select();
          });
          columnHeader.append(fieldValue);
        }
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多