【发布时间】:2014-07-26 23:13:25
【问题描述】:
我使用的是 MVC C#/Razor,我的过滤功能完全正常,页面加载时标题输入不会出现。我使用以下 sn-p 来设置输入:
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);
});
但是,为了让输入出现,我需要先重新排序一列。我假设重新排序列函数正在调用 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);
});
【问题讨论】:
-
你不应该
$("#versionGrid").show();。 Slickgrid 为您处理。查看this fiddle。确保您的options相同,并且您已包含对grid.init()的调用。注意:forceFitColumns替换了grid.autosizeColumns();
标签: c# javascript jquery model-view-controller slickgrid