我怎样才能得到SlickGrid标题过滤器出现在网格负载上

本文关键字:过滤器 网格 负载 标题 SlickGrid | 更新日期: 2023-09-27 18:07:13

我使用MVC c#/Razor,我的过滤工作完全,标题输入只是不出现当页面加载。我使用以下代码片段设置输入:

    grid.onHeaderRowCellRendered.subscribe(function (e, args) {
        $(args.node).empty();
        $("<input type='text'>")
           .data("columnId", args.column.id)
           .val(columnFilters[args.column.id])
           .appendTo(args.node);
    });

但是,为了显示输入,我需要首先对列重新排序。我假设reorder列函数正在调用onHeaderRowCellRendered函数,然后创建这些输入。我的问题是,为什么不是onHeaderRowCellRendered函数调用时,网格加载在第一个地方,我怎么能让它运行时,网格被创建,或者,我怎么能只是得到输入文本框出现?

下面有更多代码:

    grid = new Slick.Grid("#versionGrid", filteredData, columns, options);
    $(grid.getHeaderRow()).delegate(":input", "change keyup", function (e) {
        var columnId = $(this).data("columnId");
        if (columnId != null) {
            columnFilters[columnId] = $.trim($(this).val());
            var localData = JSON.parse(JSON.stringify(slickdata));
            filteredData = filterData(columnFilters, localData);
            grid.setData(filteredData);
            $("#versionGrid").show();
        }
    });
    grid.autosizeColumns();
    $("#versionGrid").show();
    grid.onHeaderRowCellRendered.subscribe(function (e, args) {
        $(args.node).empty();
        $("<input type='text'>")
           .data("columnId", args.column.id)
           .val(columnFilters[args.column.id])
           .appendTo(args.node);
    });

我怎样才能得到SlickGrid标题过滤器出现在网格负载上

为了实现这一点,我只需要自己调用一次过滤器创建代码。

function appendFiltersCreators(e, sender){
    ...
}
$(function () {
    slickgrid.onColumnsReordered.subscribe(appendFiltersCreators);
    appendFiltersCreators(null, {"grid": slickgrid});
});

我使用不同的事件,但它应该在你的情况下工作。