【发布时间】:2011-08-27 14:00:38
【问题描述】:
我找到了 Oleg (http://www.ok-soft-gmbh.com/jqGrid/FillToolbarSearchFilter.htm) 的非常好的演示,它显示了“使用本地数据自动完成的 jqGrid 工具栏搜索”,但很难获得这可以通过 ajax 为 json 工作。自动完成功能不起作用是否有充分的理由 - 即使我在加载后强制网格位于本地?
$(document).ready(function() {
var mygrid = $("#mylist"),
mygetUniqueNames = function(columnName) {
var texts = mygrid.jqGrid('getCol',columnName), uniqueTexts = [],
textsLength = texts.length, text, textsMap = {}, i;
for (i=0;i<textsLength;i++) {
text = texts[i];
if (text !== undefined && textsMap[text] === undefined) {
// to test whether the texts is unique we place it in the map.
textsMap[text] = true;
uniqueTexts.push(text);
}
}
return uniqueTexts;
};
mygrid.jqGrid({
url:'autocompleteTest.php',
datatype: "json",
colNames:['name', 'City','stateCd'],
colModel:[
{name:'name',index:'name',width:225, search: true},
{name:'City',index:'City',width:125},
{name:'stateCd',index:'stateCd',width:75},
],
rowNum: 100,
loadonce : true,
sortname: 'name',
sortorder: 'desc',
sortable: true,
viewrecords: true,
rownumbers: true,
sortorder: "desc",
ignoreCase: true,
pager: '#mypager',
height: "auto",
caption: "How to use filterToolbar better with data from server"
}).jqGrid('navGrid','#mypager',
{edit:false, add:false, del:false, search:false, refresh:false});
mygrid.jqGrid('setColProp', 'name',
{
searchoptions: {
sopt:['bw'],
dataInit: function(elem) {
$(elem).autocomplete({
source:mygetUniqueNames('name'),
delay:0,
minLength:0
});
}
}
});
mygrid.jqGrid('filterToolbar',
{stringResult:true, searchOnEnter:true, defaultSearch:"bw"});
});
【问题讨论】:
-
您应该使用
colModel的dataInit选项来初始化jQuery UI 自动完成控件。因为 jqGrid 不直接支持jQuery UI Autocomplete,所以你应该在你的服务器代码中实现相应的部分。因为您没有发布任何代码,所以不清楚您是在客户端还是在服务器端有问题。如果您发布代码,可以为您提供更多建议。 -
[你好! Schoen dass Sie gescrhieben haben.] 我逐字逐句地使用了演示中的代码;所以正如你所描述的那样使用datainit。我将稍后发布代码示例。制造商,J
-
@J. Kaufman:我发布的 url 显示(如果您单击页面上的“查看源代码”链接),在 ajax 调用服务器的情况下,
autocomplete的source参数应该是 服务器 url 提供数据。 -
@Oleg,因为我已经在网格中有数据,我希望我可以创建源参数所期望的数组。你是说我应该有一个单独的服务器 url 来获得预期形式的结果。你认为这是一个有前途的方法吗?对不起,如果我很愚蠢...
标签: json autocomplete jqgrid