大家好! 我添加了在jqgrid列中获取唯一下拉列表的代码。 Dropdownlist即将推出但jqgrid的第一页即将发布,表示dropdownlist具有jqgrid第一页的唯一值,而我需要整个Jqgrid的所有唯一值..
下面我发布了我的代码......
grid = $("#gridId");
getUniqueNames = function (columnName) {
var texts = grid.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;
},
buildSearchSelect = function (uniqueNames) {
var values = ":All";
$.each(uniqueNames, function () {
values += ";" + this + ":" + this;
});
return values;
},
setSearchSelect = function (columnName) {
grid.jqGrid('setColProp', columnName,
{
stype: 'select',
searchoptions: {
value: buildSearchSelect(getUniqueNames(columnName)),
sopt: ['eq']
}
}
);
};
我这样称呼这个函数......
setSearchSelect('extension');
grid.jqGrid('setColProp', 'Name',
{
searchoptions: {
sopt: ['cn'],
dataInit: function (elem) {
$(elem).autocomplete({
source: getUniqueNames('Name'),
delay: 0,
minLength: 0
});
}
}
});
setSearchSelect('username');
grid.jqGrid('setColProp', 'Name',
{
searchoptions: {
sopt: ['cn'],
dataInit: function (elem) {
$(elem).autocomplete({
source: getUniqueNames('Name'),
delay: 0,
minLength: 0
});
}
}
});
在这两个代码片段之间,我使用Ajax调用将数据加载到本地jqgrid中。 任何帮助将非常感激.. Thanx提前..
答案 0 :(得分:0)
我相信getCol将仅返回来自jqgrid的当前加载数据(对于已定义的列)。 因为首先你只加载第一页,自动完成无法知道列的唯一值超过它!
您必须一次加载所有页面(小数据集)或 从数据库填写自动填充。