我有很多列的 jqGrid 表。使用过滤器工具栏在网格中进行搜索。对于他们中的大多数人来说,搜索只是简单的默认运算符。对于一个日期时间列,我想要不同类型的运算符和日期选择器选择器。我已将dataInit
datepicker 初始化添加到searchoptions
,必要的运算符到searchoptions.sopt
. 为了显示这个运算符,我将 searchOperators 设置为 true。所以对于这个专栏,一切都很好。我有带有运算符选择器弹出窗口的日期选择器。但对于所有其他列,默认运算符图标显示在其左侧。这很烦人,因为运营商是默认的,用户无法更改它。那么是否有可能使用 jqGrid API 隐藏它们?据我所见,我只能使用我的自定义代码来隐藏它:
我需要检查我的列模型,并在渲染网格(可能在loadComplete
)之后检查所有空的列sopt
或sopt.length == 0
删除运算符选择器。或者添加隐藏它的 CSS 类。不确定这些解决方案中哪个更好(隐藏或删除),因为删除可能会破坏某些逻辑,并且隐藏可能会影响宽度计算。这是我在小提琴上的意思的示例
function fixSearchOperators()
{
var columns = jQuery("#grid").jqGrid ('getGridParam', 'colModel');
var gridContainer = $("#grid").parents(".ui-jqgrid");
var filterToolbar = $("tr.ui-search-toolbar", gridContainer);
filterToolbar.find("th").each(function()
{
var index = $(this).index();
if(!(columns[index].searchoptions &&
columns[index].searchoptions.sopt &&
columns[index].searchoptions.sopt.length>1))
{
$(this).find(".ui-search-oper").hide();
}
});
}
有人有更好的想法吗?