手动排序后仅在jqgrid中工作的筛选器
我有一个jqgrid应用程序。我在左面板上有过滤器(带有复选框),主面板中的网格应该只列出过滤的行。它实际上可以工作,但只有在单击列的名称并对列进行排序后才能工作 创建过滤器的函数如下所示:手动排序后仅在jqgrid中工作的筛选器,jqgrid,filtering,Jqgrid,Filtering,我有一个jqgrid应用程序。我在左面板上有过滤器(带有复选框),主面板中的网格应该只列出过滤的行。它实际上可以工作,但只有在单击列的名称并对列进行排序后才能工作 创建过滤器的函数如下所示: function filtraTablaElemRegFiltros(filtroZona, filtroEnt,filtroVal){ filtroORZona={groupOp:"OR",rules:[]}; filtroOREnt={groupOp:"OR",rules:[]};
function filtraTablaElemRegFiltros(filtroZona, filtroEnt,filtroVal){
filtroORZona={groupOp:"OR",rules:[]};
filtroOREnt={groupOp:"OR",rules:[]};
filtroORVal={groupOp:"OR",rules:[]};
filtro = {groupOp:"AND",groups:[]};
var grid = $("#tabla");
var filtroZonaArray= new Array();
var filtroEntArray= new Array();
var filtroValArray= new Array();
todosElemReg= grid.jqGrid('getGridParam', 'data');
filtroZonaArray=filtroZona.split("-");
filtroEntArray=filtroEnt.split("-");
filtroValArray=filtroVal.split("-");
for(i=1;i<filtroZonaArray.length;i++){
filtroORZona.rules.push({"field":"nombre","op":"bw","data":filtroZonaArray[i]});
}
for(i=1;i<filtroEntArray.length;i++){
filtroOREnt.rules.push({"field":"entidadCod","op":"eq","data":filtroEntArray[i]});
}
for(i=1;i<filtroValArray.length;i++){
filtroORVal.rules.push({"field":"validado","op":"eq","data":filtroValArray[i]});
}
filtro.groups.push(filtroORZona);
filtro.groups.push(filtroOREnt);
filtro.groups.push(filtroORVal);
grid[0].p.search = filtro.groups.length > 0; //busca si filtro no está vacío
$.extend(grid[0].p.postData,{filters:JSON.stringify(filtro)});
grid.trigger("reloadGrid",[{page:1}]);
}
左侧的html面板包括:
<div id="validacion">
<input type="checkbox" name="valSelect" id="VALIDO" onclick="filtrarContenido()" /><label for="VALIDO">Validado</label>
<input type="checkbox" name="valSelect" id="INVALIDO" onclick="filtrarContenido()" /><label for="INVALIDO">Invalidado</label>
<input type="checkbox" name="valSelect" id="PENDIENTE" onclick="filtrarContenido()" /><label for="PENDIENTE">Pendiente</label>
</div>
有人能帮我吗?为什么单击复选框后不显示过滤后的数据?它实际上是在过滤它们,但在单击排序列之前不会显示它们
谢谢你的阅读 我刚刚意识到,如果在重新加载网格之前,我显示一个警报窗口,它也可以工作。奇怪…我还是有这个问题。有人能给我一个线索吗?谢谢
<div id="validacion">
<input type="checkbox" name="valSelect" id="VALIDO" onclick="filtrarContenido()" /><label for="VALIDO">Validado</label>
<input type="checkbox" name="valSelect" id="INVALIDO" onclick="filtrarContenido()" /><label for="INVALIDO">Invalidado</label>
<input type="checkbox" name="valSelect" id="PENDIENTE" onclick="filtrarContenido()" /><label for="PENDIENTE">Pendiente</label>
</div>
function filtrarContenido(){
var valorZona="";
var valorEnt="";
var valorVal="";
$("input:checkbox[name=zonaSelect]:checked").each(function() {
valorZona=valorZona+"-"+$(this).attr('id');
});
$("input:checkbox[name=entSelect]:checked").each(function() {
valorEnt=valorEnt+"-"+$(this).attr('id');
});
$("input:checkbox[name=valSelect]:checked").each(function() {
valorVal=valorVal+"-"+$(this).attr('id');
});
urlPrincipal=document.getElementById("principal").contentWindow.location.href;
posArgumentos=urlPrincipal.search('codigo_descarga');
if(posArgumentos!='-1') urlPrincipal=urlPrincipal.substring(0,posArgumentos-1);
urlNueva=urlPrincipal+'?codigo_descarga=0'+'&'+'filtroZona='+valorZona+'&'+'filtroEnt='+valorEnt+'&'+'filtroVal='+valorVal;
document.getElementById("principal").contentWindow.location.href=urlNueva;
}