Параметры поиска JqGrid: поиск инструментов по сравнению со стандартным окном поиска - PullRequest
2 голосов
/ 17 марта 2011

Я хочу разрешить пользователям фильтровать каждый столбец, используя только один параметр sopt. Но для более продвинутого поиска (для опытных пользователей) я хочу разрешить им использовать встроенную кнопку поиска, но я хочу переопределить отдельные параметры поиска по столбцам для перечисленных в odata. Например, я хочу, чтобы у моих пользователей был только ['eq'], но я хочу, чтобы опытный пользователь мог выбирать из одних данных. Но параметры поиска в окне поиска используют только те, которые связаны с определением столбца.

 oGridtxtsopt = ['cn'];
 oGriddtesopt = ['eq'];
 oGridnumsopt = ['eq'];
 oGridselsopt = ['eq'];
 oGridFile = '@ViewBag.GridType';
 oGridSortColumn = "FirstName";
 oGridColNames = ['First Name', 'Last Name', 'E-mail Address', 'Date', 'Gender', 'State list', 'Rate', 'Age', 'Phone Number', ''];
 oGridColModel =
        [
            { name: 'FirstName', index: 'FirstName', width: 110, searchoptions: {sopt:['eq','bw']}},

            { name: 'LastName', index: 'LastName', width: 110, searchoptions: { sopt: oGridtxtsopt} },

            { name: 'EmailAddress', index: 'EmailAddress', width: 250, searchoptions: { sopt: oGridtxtsopt }, formatter: 'email' },

            { name: 'HireDate', index: 'HireDate', width: 80, align: "center", formatter: 'date', formatoptions: { srcformat: 'Y/m/d', newformat: 'm/d/Y' },
                searchoptions: { sopt: oGriddtesopt, dataInit: amiDatePicker} },

            { name: 'Gender', index: 'Gender', width: 55, align: "center", stype: 'select',
                searchoptions: { dataUrl: '@Url.Action("amiLookup")?' + $.param({ lookup: 'GENDER' })} },

            { name: 'State', index: 'State', width: 110, align: "center", stype: 'select',
                searchoptions: { dataUrl: '@Url.Action("amiLookup")?' + $.param({ lookup: 'STATES' })} },

            { name: 'Rate', index: 'Rate', width: 45, align: "right", searchoptions: { sopt: oGridnumsopt }, formatter: 'number', formatoptions: { decimalPlaces: 2, suffix: " %"} },

            { name: 'Age', index: 'Age', width: 30, align: "center", searchoptions: { sopt: oGridnumsopt }, formatter: 'integer' },

            { name: 'Phone', index: 'Phone', width: 95, align: "center", searchoptions: { sopt: oGridtxtsopt }, formatter: amiPhoneFormatter },

            { name: 'Action', index: 'Action', width: 40, align: "center", sortable: false, search: false, formatter: amiActionFormatter }
        ];

        oGridSearch = "endeavourSearch";
        oGridName = "endeavourGrid";
        oGridPager = "endeavourGridPager";

 $('#' + oGridName).jqGrid
        ({              

            recordtext: oGridFile + " Found - {2}",
            emptyrecords: "No " + oGridFile + " Found",
            loadtext: "Searching " + oGridFile + "...",
            pgtext: "Page {0} of {1}",
            url: '@Url.Action("GetData")',
            datatype: "json",
            colNames: oGridColNames,
            colModel: oGridColModel,
            recreateFilter: true,
            rowNum: 15,
            mtype: "GET",
            rowList: [15, 30, 50, 100],
            pager: '#' + oGridPager,
            sortname: oGridSortColumn,
            sortorder: "asc",
            height: "100%",
            viewrecords: true,
            rownumbers: false,
            gridview: true,
            loadonce: false,
            hidegrid: false,
            clearfooter: true,
            caption: oGridFile + " List",
            jsonReader: { repeatitems: false }

        })

        .filterToolbar(
            {
                stringResult: true, searchOnEnter: true, closeOnEscape: true 
            })



        .navGrid('#' + oGridPager,
            {
                edit: false, add: false, del: false, refresh: false, search: true,
                searchtitle: "Search using advanced search options",
                searchtext: "Advanced Search"
            },
            { }, // edit
            { }, // add
            { }, // delete
            { 
                closeOnEscape: true, 
                multipleSearch: true, 
                closeAfterSearch: true,
                closeAfterReset: true,
                caption: "Endeavour Advanced Search",
                Find: "Search",
                Reset: "Cancel",
                odata: ['equal', 'not equal', 'less', 'less or equal', 'greater', 'greater or equal', 'begins with', 'does not begin with', 'is in', 'is not in', 'ends with', 'does not end with', 'contains', 'does not contain'],
                groupOps: [{ op: "AND", text: "all" }, { op: "OR", text: "any"}],
                matchText: "    Find",
                rulesText: " matches"

            }, // Search 
            {} // view
            ) ;

}

1 Ответ

1 голос
/ 17 марта 2011

Вы должны поставить на первое место (как первый элемент) из sopt параметр, который вы хотите использовать в filterToolbar. Например, en для всех выбранных элементов (stype: 'select') и cn или bw для остальных (по умолчанию stype: 'text'). Вы можете дополнительно использовать defaultSearch параметр filterToolbar, который будет использоваться, если в searchoptions.

не определена опция поиска sopt.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...