【发布时间】:2011-10-24 20:11:40
【问题描述】:
我创建了一个基于此 example 的过滤器工具栏。我有一个奇怪的问题;这仅在我设置了 firebug 断点时才有效,否则,下拉列表仅显示“全部”。网格设置为 datatype:'json', loadonce:true。还有一点;这个网格也有一个子网格。知道如何让它发挥作用吗?
grid = $("#dealsgrid"),
getUniqueNames = function(columnName) {
var texts = grid.jqGrid('getCol', columnName);
var uniqueTexts = [];
var textsLength = grid.jqGrid('getGridParam','data');
var 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' ]
}
});
};
我声明网格后,我的列模型是这样的:
colModel:[
{name:'CM',index:'CM', width:50,editable:false},
{name:'DealNo',index:'DealNo',width:75,editable:false,editoptions:{readonly:true, size:10},search:true, stype:'text', searchoptions: { sopt: ['eq']}},
{name:'KeyDate',index:'KeyDate',width:100, search:false, align:"right",formatter:'date'},
{name:'VendorNo',index:'VendorNo', width:75,search:true},
{name:'VendorName',index:'VendorName', width:100,search:true},
{name:'ItemQty',index:'ItemQty', width:75,search:false},{name:'StartDate',index:'StartDate',width:100,align:"right",formatter:'date',search:false},
{name:'EndDate',index:'EndDate',width:100, align:"right",formatter:'date',search:false},
{name:'ActiveStartDate',index:'ActiveStartDate',width:100, align:"right",formatter:'date',search:false, sorttype:"date", editable:true,editoptions:{size:10}}, {name:'ActiveEndDate',index:'ActiveEndDate',width:100,align:"right",formatter:'date',search:false, sorttype:"date",editable:true,editoptions:{size:10}},
{name:'DealType',index:'DealType', width:75,search:false}
],
最后,我调用创建 filterToolBar 并填充下拉列表
setSearchSelect('CM');
grid.jqGrid('setColProp', 'Name', {
searchoptions : {
sopt : [ 'cn' ],
dataInit : function(elem) {
$(elem).autocomplete({
source : getUniqueNames('Name'),
delay : 0,
minLength : 0
});
}
}
});
grid.jqGrid('filterToolbar', {
stringResult : true,
searchOnEnter : true,
defaultSearch : "eq"
});
任何建议将不胜感激。 谢谢
【问题讨论】:
-
能否请您用 jsfiddle 重现您的问题,以便我们看看。我已经为您创建了一个包含适当资源(css 和 js)的文件 - jsfiddle.net/yTX3P/1 不要忘记保存它。
-
@Martijn B 我的代码可在link获得
-
您的示例没有重现该问题。没有可用的数据。我不能用这种方式帮助你。您可以尝试在 getUniqueNames 方法的 return uniqueTexts 上放置一个断点,并检查正在返回哪些值。如果这是空的,你必须专注于 getUniqueNames 方法。
-
@Martijn B 当我在 return uniqueTexts 上设置中断时,我什么也得不到,但是,当我在 setSearchSelect('CM'); 上设置中断时,我什么也得不到。我得到了唯一名称的列表。我不需要单步执行代码,我只需要点击运行。我是否可能需要在某处放置等待语句?
标签: jquery jquery-plugins jqgrid