Tôi có bảng jqGrid với nhiều cột. Tìm kiếm trong lưới được thực hiện bằng cách sử dụng thanh công cụ bộ lọc. Đối với hầu hết trong số họ tìm kiếm chỉ là nhà điều hành mặc định đơn giản. Đối với một cột datetime tôi muốn loại khác nhau của các nhà khai thác và bộ chọn datepicker. Tôi đã thêm dataInit
khởi tạo datepicker thành searchoptions
, các toán tử cần thiết vào searchoptions.sopt
. Để hiển thị các toán tử này, tôi đã đặt searchOperators thành true. Vì vậy, cho cột này tất cả là ok. Tôi có datepicker với popup chọn nhà điều hành. Nhưng đối với tất cả các cột khác, biểu tượng toán tử mặc định được hiển thị ở bên trái của nó. Nó là gây phiền nhiễu như là nhà điều hành là mặc định và người dùng không thể thay đổi nó. Vì vậy, có một số khả năng để ẩn chúng bằng cách sử dụng API jqGrid? Theo như tôi có thể nhìn thấy tôi có thể ẩn này chỉ sử dụng mã tùy chỉnh của tôi:jqGrid thanh công cụ bộ lọc hiển thị tìm kiếm toán tử chọn chỉ cho một cột
Tôi cần phải kiểm tra mô hình cột của tôi và sau khi render của lưới (có thể trong loadComplete
) cho tất cả các cột có sản phẩm nào sopt
hoặc sopt.length == 0
để loại bỏ hành bộ chọn. Hoặc thêm lớp CSS ẩn nó. Không chắc chắn giải pháp nào tốt hơn (ẩn hoặc xóa) vì việc xóa có thể đã phá vỡ một số logic và việc ẩn có thể ảnh hưởng đến tính toán chiều rộng. Dưới đây là ví dụ về ý nghĩa của tôi trên fiddle
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();
}
});
}
Có ai có ý tưởng nào tốt hơn không?