2014-06-05 34 views
0

我正在使用MVC C#/ Razor,我的過濾工作完全,頁面加載時不顯示頁眉輸入。我用下面的代碼片段來設置輸入:如何讓SlickGrid標題過濾器出現在網格加載?

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); 
    }); 
+0

我基於這個關閉下面的例子:https://github.com/mleibman/SlickGrid/blob/master/examples/example-header-row.html – peppajack

+0

你不應該''(「 。#versionGrid「)示出了();'。 Slickgrid爲您處理。看看[這個小提琴](http://jsfiddle.net/origineil/KKM7p/)。確保你的選項是相同的,並且你已經包含了一個對'grid.init()'的調用。注意:'forceFitColumns'代替'grid.autosizeColumns();'的需要 – Origineil

回答

0

爲了實現這一點,我只是通過自己調用過濾器創建代碼一次。

function appendFiltersCreators(e, sender){ 
    ... 
} 

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

我使用不同的事件,但它也應該在你的情況下工作。