javascript - JQGrid 在标题栏中显示过滤器详细信息

标签 javascript jquery jqgrid

是否可以将当前应用的过滤器参数显示为附加到标题栏中主标题的描述性字符串

“客户 - [ Field1 = 'ABC' 且 Field2 = 'CDE' ]”

找不到应用过滤器后可以 Hook 的事件?

最佳答案

我发现你实际上并不需要在搜索后发生事件。每次搜索请求时,网格中的数据都会重新加载。因此,您可以使用 beforeRequestloadBeforeSendserializeGridDatagridCompleteloadComplete 等事件.

从您的标题示例来看,我认为您使用“高级搜索”。我只想演示可能的解决方案的主要思想,因此我选择 loadComplete 来实现捕获更改:

jQuery('#list').jqGrid({
    // ...
    loadComplete: function(data) {
        var postData = jQuery('#list').getGridParam("postData");
        var newCapture = "Title";
        if (postData._search === true && typeof postData.filters !== "undefined") {
            var filters = jQuery.parseJSON(postData.filters);
            newCapture = "Title: [";
            var rules = filters.rules;
            for (var i=0; i<rules.length; i++) {
                var rule = rules[i];
                var op = rule.op;  // the code name of the operation
                if (jQuery.fn.searchFilter && jQuery.fn.searchFilter.defaults &&
                    jQuery.fn.searchFilter.defaults.operators) {
                    // find op description 
                    var operators = jQuery.fn.searchFilter.defaults.operators;
                    for (var j=0; j<operators.length; j++) {
                        if (operators[j].op === rule.op) {
                            op = operators[j].text;
                            //op = $.jgrid.search.odata[j];
                            break;
                        }
                    }
                }
                newCapture += rule.field + " " + op + " '" + rule.data + "'";
                if (i+1 !== rules.length)
                    newCapture += ", ";
            }
            newCapture += "]";
        }
        jQuery('#list').setCaption(newCapture);
    }
});

如果您不使用“高级搜索”,则应使用 searchFieldsearchOpersearchString 而不是 过滤器 code> 根据搜索条件构建网格标题。

目前在示例中我不使用本地化名称进行操作,但很明显可以做到这一点。

关于javascript - JQGrid 在标题栏中显示过滤器详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204644/

相关文章:

c# - 从 C# 生成 json 的最佳方法是什么

jquery - jqgrid 显示链接

javascript - HTML 5 媒体流用于录制功能上的视频录制问题

jquery - 在下拉菜单上被下推的内容

javascript - 如何在保持相同 API 的同时将此 JavaScript 包装在立即调用的函数表达式 (IIFE) 中?

javascript - Javascript 的媒体查询方法

javascript - jqgrid 复选框更改事件

javascript - 如何正确选择所有复选框?

javascript - Jquery - 按行 chop 文本(不是按字符数)

javascript - 将对象中的位置作为变量传递