JQGrid не учитывает автозаполнение по нескольким критериям фильтра - PullRequest
1 голос
/ 06 марта 2012

У меня есть JQGrid с несколькими заголовками и двумя столбцами с включенным автозаполнением.Когда я захожу в JQGrid Filter и выбираю один из столбцов для фильтрации с включенным автозаполнением, он работает просто отлично, и функция автозаполнения вызывается, как и ожидалось.Однако, когда я добавляю второй столбец для фильтрации результатов, которые также содержат функцию автозаполнения, автозаполнение не работает для нового фильтра, а также отключает автозаполнение в предыдущем фильтре.

Вот так выглядит код автозаполнения:

Common.setAutoComplete = function (id, url, select, change, extraParams)
    {
      id.autocomplete(
      {
        source: function (request, response)
        {
            alert("start of autocomplete");
            $.ajax(
            {
                url: url,
                data: { query: request.term, extraParameters: extraParams },
                dataType: 'json',
                type: 'POST',
                success: function (data)
                {
                    if (data)
                        response(data);
                }
            });
        },
        delay: 10,
        minChars: 1,
        matchSubset: 1,
        matchContains: 1,
        cacheLength: 400,
        select: select,
        change: change,
        autoFill: true
    });
    };

А вывод из JQGrid выглядит так:

<script type="text/javascript">
var invalidRows = [];
var allRowsValid = true;
var validRows = [];
var IssuerListTablerowId;
var IssuerListTablehasDefaultFilter = true;
var currentTableRowId;
var rowsToSave = [];
var IssuerListTablerowsToSave = [];
var currentTableId = 'IssuerListTable';
     $(document).ready(function(){

     $('#IssuerListTable').jqGrid({

     url:        '/Issuers/GetAll/',
     mtype:      'POST',
     datatype:   'json',
     colNames: ['Issuer', 'ICN', 'Contact', 'Broker'],

     colModel: [
     {"sortable":true, "search":true, "editable":false, "hidden":false, name: 'Name', editrules:{}, addrules:{}, searchoptions: {sopt: ['cn','nc'], searchhidden:true,hidden:false,dataInit:function(a){Common.setAutoComplete($(a),'/Issuers/GetIssuerByShortNameAndLongNameForAutoComplete',null);}} }, 
     {"sortable":true, "search":true, "editable":false, "hidden":false, name: 'ICN', editrules:{}, addrules:{}, searchoptions: {sopt: ['cn','nc'], searchhidden:true,hidden:false} , width: 30}, 
     {"sortable":true, "search":true, "editable":false, "hidden":false, name: 'Contact', editrules:{}, addrules:{}, searchoptions: {sopt: ['cn','nc'], searchhidden:true,hidden:false} , width: 50},     
     {"sortable":true, "search":true, "editable":false, "hidden":false, name: 'Broker', editrules:{}, addrules:{}, searchoptions: {sopt: ['cn','nc'], searchhidden:true,hidden:false,dataInit:function(a){Common.setAutoComplete($(a),'/Brokers/GetBrokersByNameForAutoComplete',false);}} , width: 90}],

onSelectRow: function(id){

                        window.location = '/Issuer/' + id ;      

                    },

     multiselect: false,    
     pager: $('#IssuerListPager'),
     editurl:        '',    
     rowNum: 20,    
     pgbuttons: false,    
     pginput: false,    
     rowList: [],    
     scrollRows: true,    
     scroll: 1,    
     recordtext: "{2} Records",    
     rowNumbers: false,    
     sortname:   '',    
     sortorder: "asc",    
     hiddengrid: false,    
     caption:    '',    
     subGrid: false,    
     toppager: false,
     height: 400,   
     shrinkToFit: true,
     autowidth: true,
     viewrecords: true,
     altClass:   'altRow',
     altRows: true,

  loadComplete: function (data) { $('#IssuerListTable').trigger('jqGrid_loadComplete_ongrid', data); return; },

     gridComplete: function() { $(document).trigger('jqGrid_gridComplete');$('#IssuerListTable').trigger('jqGrid_gridComplete_ongrid');Pfc.Common.DisplaySearchDataInPager('IssuerListTable','IssuerListPager',IssuerListTablehasDefaultFilter); return; },

     beforeRequest: function() { var event = $.Event('jqGrid_beforeRequest'); $('#IssuerListTable').trigger(event); return !event.isDefaultPrevented(); },

     beforeSelectRow: function(rowid, e) {  var event = jQuery.Event('jqGrid_beforeSelectRow'); $('#IssuerListTable').trigger(event, [rowid, e]); return !event.isDefaultPrevented(); },

     onSelectAll: function(rowids, status) { $('#IssuerListTable').trigger('jqGrid_onSelectAll', [status, rowids]); },

     });

     $('#IssuerListTable').jqGrid('navGrid', '#IssuerListPager', {edit:false, edittext:'Edit', add:false, addtext:'Add', del:false, deltext:'Delete', search:true, searchtext:'Search', view:false}, {/**/ }, {/*Add*/beforeShowForm:function(){} }, {reloadAfterSubmit:true, mtype:'POST', url:''}, { search:true, groupOps: [ { op: "AND", text: "any"} ],  searchtext: 'Search',  caption: "Search Issuers",  Reset: "Clear",  closeAfterSearch: true,  closeOnEscape: true,  multipleSearch: true }, {/*view*/});$('#IssuerListTable').jqGrid('navButtonAdd', '#IssuerListPager', {position:'first', caption:'Add', buttonicon:'ui-icon-plus', onClickButton: function(){$(location).attr('href', '/Issuer/Add')}});

     });

</script>

Спасибо.

...