我使用jqGrid在我的第一個ASP.NET MVC 3上顯示錶格數據,並發現它真的很有用,特別是篩選數據。對於字符串類型,我使用帶有「contains」的列過濾功能,並且非常適合剔除字符串。對於日期數據,我使用日期選擇器。大。列jqGrid布爾值或枚舉下拉列表篩選
現在我有幾列(例如「包含堅果」),它們本質上是布爾值。我想提供一種方法來過濾這些。現在他們顯示爲「true」和「false」,並使用我的字符串類型列使用的相同的基於字符串的過濾。這有點笨重。我認爲我想要做的就是通過下拉機制選擇三個值之一(true/false/both)。
我現在colModel有像這樣爲我的「布爾」字段中輸入:
{ name: 'ContainsNuts',
index: 'ContainsNuts',
align: 'left',
searchoptions: { sopt: ['eq, 'ne']}
}
這隻能當用戶鍵入「假」或「真」 - 再次,笨重。
對於其他一些列,我想用枚舉的下拉列表,例如,我有一個'Cones'列,因爲有很多行並且頁面結果 - 使用自動完成文本過濾有點命中或者未命中以供用戶找到所有可能的值。希望這是有道理的。
所以我已經試過是這樣的 - 我創建了一個控制器動作,看起來像這樣:
public JsonResult AvailableCones()
{
var context = new IceCreamEntities();
var query = context.Cones.AsQueryable().Distinct();
List<string> all = query.Select(m => m.Name).ToList();
return Json(all, JsonRequestBehavior.AllowGet);
}
而且我做了這樣的事[也許令人費解的做法]創建在過濾對話框中下拉選擇我的文檔中的錐準備:
...
createSearchSelection = function (someValues) {
var outputValues = "";
if (someValues && someValues.length) {
for (var i = 0, j = someValues.length; i < j; ++i) {
var entry = someValues[i];
if (outputValues.length > 0) {
outputValues += ";";
}
outputValues += entry + ":" + entry;
}
}
return outputValues;
}
setTheSearchSelections = function (colName, url){
$('#icecreamgrid').jqGrid('setColProp', colName,
{
stype: 'select',
searchoptions: {
value: createSearchSelection(url),
sopt: ['eq']
}
});
}
gotData = function(data) {
setTheSearchSelections('ConeType', data);
}
var url = "/IceCream/AvailableConeTypes";
$.get(url, null, gotData);
的結果是,我獲得在搜索對話框中ConeType列下拉和正確的行列顯示出來。大。這很酷,它的工作。
然而,我不知道該怎麼做,就是讓下拉列表顯示在我的列標題過濾器中,就像現在在過濾器對話框中顯示的那樣。我怎樣才能增加我必須做的事情?其次,我怎樣才能讓我有工作的布爾值?
感謝您的回覆。所以,結果是,這確實會在網格上產生Cones下拉菜單,但是搜索對話框中的下拉列表不會填充。奇怪的是,如果我使用'jQuery.parseJSON(data)'而不是'jQuery.parseJSON(data.responseText)',那麼下拉菜單在過濾器對話框中工作,但表格標題中的一個不會被填充。奇怪的。 – itsmatt
當我查看Firebug的數據時,它是'XMLHttpRequest ...'用於網格下拉列表的填充,但是當我打開搜索對話框時,數據就像''「Cake」,「Sugar」,「華夫餅「]」' - 無論如何,這是一條信息。仍在調查這一點。 – itsmatt
Hello @Oleg。您知道如何處理「All,True,False」等多個案例,即searchoptions:{value:「All:All; 1:Active; 0:InActive」}}。有了這個,在選擇'全部'我得到一些類型錯誤。無法將「全部」轉換爲布爾類型。我也嘗試了'-1'。 – Jaikrat