2012-05-11 108 views
0

我有一個帶有高級過濾器的jqGrid 4.3.1。一些布爾類型的列如Yes/No types,當創建一個新的高級過濾器行時選擇列類型時,我會顯示一個下拉列表。 例如說第2列是IsActive(布爾)類型,當選擇這個時,我顯示了一個下拉菜單而不是文本框。 將覆蓋jqGrid的先進過濾器的代碼如下:jqGrid高級搜索對話框 - 具有下拉選擇的列

var cols = grid.jqGrid("getGridParam", "colModel"); 
for (var i = 0; i < cols.length; i++) { 
if (cols[i].stype && cols[i].stype == "select" && cols[i].searchoptions && cols[i].searchoptions.buildSelect && $.isFunction(cols[i].searchoptions.buildSelect) 
&& !cols[i].searchoptions.dataUrl && !cols[i].searchoptions.value) { 
cols[i].searchoptions.value = cols[i].searchoptions.buildSelect(null); 
} 

該代碼使用4.3版本(4.3.1前一個版本),以做工精細 不知道是什麼原因造成的問題,但現在我的下拉菜單顯示爲空白。 任何幫助表示讚賞!

回答

2

您沒有發佈您使用的代碼buildSelect,所以很難說代碼失敗的原因。我不明白的主要原因是你爲什麼有這麼複雜的代碼。如果您知道列IsActive的布爾類型爲「是」,並且您希望在「高級搜索」對話框中將其顯示爲具有「是」和「否」值的下拉列表並將其顯示在網格中並且在編輯過程中顯示爲複選框,則可以執行以下操作:

{ name: "IsActive", template: myCheckboxTemplate } 

其中mytemplateCheckbox你這樣定義

var myCheckboxTemplate = { 
     formatter: "checkbox", align: "center", width: 20, 
     edittype: "checkbox", editoptions: { value: "1:0" }, 
     stype: "select", searchoptions: { sopt: ["eq", "ne"], value: "1:Yes;0:No" } 
    }; 

所描述的方法我用永久和它工作得很好。與上面的代碼唯一的區別是我使用"clickableCheckbox"格式化程序而不是「複選框」。如果你想要,你可以從here下載它。

+0

感謝您的回答。我已經添加了一個新的問題,我真的很掙扎..http://stackoverflow.com/questions/10579864/jqgrid-column-selector-inline-rather-than-in-dialog – chugh97

+0

我的構建選擇函數映射到一個函數其中有以下實現返回「:所有;真:真;假:假」;; – chugh97

+0

@ chugh97:哪種感覺必須從服務器獲取靜態數據(來自URL'dataUrl'),然後將其轉換爲帶有靜態值的選擇?此外,'buildSelect'必須產生HTML片段''而不是字符串'':All; true:True; false:False「 '用作'value'屬性的值。搜索對話框中':All;'的用法也不好。一切似乎都很奇怪...... – Oleg

相關問題