jquery - JqGrid फ़िल्टर नियम-क्या हम एक ऐरे के आधार पर फ़िल्टर कर सकते हैं?



(1)

मेरे पास एक सरणी है जिसमें से मुझे JQGrid को फ़िल्टर करने की आवश्यकता है।

var filter = ["a","b","c","d",...255];
var postData = $('jqGridName').jqGrid('getGridParam', 'postData');
jQuery.extend(postData,
{
    filters: {
        groupOp: "AND",
        rules: [
            { field: "Types", op: "ne", data: filter[0] },
            { field: "Types", op: "ne", data: filter[1] },
            { field: "Types", op: "ne", data: filter[2] },
            { field: "Types", op: "ne", data: filter[3] },
            .
            .
            .
            { field: "Types", op: "ne", data: filter[255] },
        ]
    },
});

सरणी में आइटम की संख्या निश्चित नहीं है। लेकिन अधिकतम यह 255 हो सकता है। तो क्या मुझे 255 (जैसा कि ऊपर) तक लिखने की ज़रूरत है या क्या इसे प्राप्त करने का कोई सरल तरीका है?

सादर,

वरुण आर


मुझे कस्टम सॉर्टिंग ऑपरेशन के साथ समस्या के बारे में स्थायी रूप से सोचना है, जो मैंने आपको (टिप्पणी में) वादा किया था, अपने कांटे से jqGrid के भविष्य के संस्करण में लागू करने के लिए। अंत में मैंने अभी इस सुविधा को लागू किया है। मैं इसे नीचे प्रस्तुत करता हूं।

पहला डेमो खोज टूलबार का उपयोग करता है और दूसरा डेमो उन्नत खोज का उपयोग करता है। दोनों सामान्य jqGrid सेटिंग्स का उपयोग करते हैं जो स्थानीय डेटा पर कस्टम खोज ऑपरेशन करने की अनुमति देता है।

सबसे पहले नए कस्टम सर्च ऑपरेशन को परिभाषित किया जाना चाहिए। मैं डेमो इन ऑपरेशन का उपयोग करता हूं जो एक नियम को कई मूल्यों के साथ परिभाषित करने की अनुमति देता है। मैं कॉलम "टैक्स" में कस्टम ऑपरेशन का उपयोग करता हूं। यह अर्धविराम ( ; ) द्वारा विभाजित कई मूल्यों के लिए फ़िल्टर करने की अनुमति देता है। संबंधित कोड नीचे की तरह दिखता है

$("#grid").jqGrid({
    colModel: [
        { name: "tax", label: "Tax", width: 100, template: "number",
            //sopt contains CUSTOM operation "nIn"
            searchoptions: { sopt: ["nIn", "eq", "ne", "lt", "le", "gt", "ge", "in", "ni"] } },
        ...
    ],
    customSortOperations: {
        // the properties of customSortOperations defines new operations
        // used in postData.filters.rules items as op peroperty
        nIn: {
            operand: "nIN",        // will be displayed in searching Toolbar for example
            text: "numeric IN",    // will be shown in Searching Dialog or operation menu in searching toolbar
            title: "Type multiple values separated by semicolon (";") to search for one from the specified values",
            buildQueryValue: function (otions) {
                // the optional callback can be called if showQuery:true option of the searching is enabled
                return otions.cmName + " " + otions.operand + " (" + otions.searchValue.split(";").join("; ") + ") ";
            },
            funcName: "myCustomIn" // the callback function implements the compare operation
        }
    },
    myCustomIn: function (options) {
        // The method will be called in case of filtering on the custom operation "nIn"
        // All parameters of the callback are properties of the only options parameter.
        // It has the following properties:
        //     item        - the item of data (exacly like in mydata array)
        //     cmName      - the name of the field by which need be filtered
        //     searchValue - the filtered value typed in the input field of the searching toolbar
        var fieldData = options.item[options.cmName],
            data = $.map(
                options.searchValue.split(";"),
                function (val) {
                    return parseFloat(val);
                }
            );
        return $.inArray(parseFloat(fieldData), data) >= 0;
    }
});

परिणामस्वरूप ऑपरेशन "nIn" को "nIn" op संपत्ति में रखा जाएगा। उदाहरण के लिए मानक "en" ऑपरेशन की तरह। jqGrid खोज टूलबार में "nIN" रूप में ऑपरेशन को प्रदर्शित करता है ( operand: "nIN" गुण)। प्रॉपर्टी tooltip ऑपरेशन पर प्रदर्शित tooltip को परिभाषित करता है।

और नीचे दिए गए एनिमेटेड जिफ पर परिणामों को फ़िल्टर किया जा सकता है

फ़िल्टरिंग के दौरान jqGrid myCustomIn कॉलबैक कहता है। तो एक बिल्कुल मुफ्त है कि कैसे इसी ऑपरेशन को लागू किया जाए।

उसी तरह से कोई व्यक्ति उन्नत खोज का भी उपयोग कर सकता है:

अद्यतन: विकि लेख नई सुविधा को अधिक विस्तृत बताता है।





jqgrid