jqGrid - определить, щелкнул ли поиск или сброс в окне поиска? - PullRequest
1 голос
/ 05 октября 2010

Мы используем jqGrid search .. как вы можете определить, нажал ли пользователь Поиск, Сброс или закрыл окно поиска?

Существует событие onClose, нопохоже, что у него нет параметров, указывающих на действие.

??

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Ответ на ваш вопрос зависит от того, как вы хотите использовать информацию.Если вы хотите, чтобы была вызвана ваша функция обратного вызова, вы можете использовать beforeShowSearch вместе с onClose:

$("#list").jqGrid('navGrid', '#pager',
    {edit: false, add: false, del: false, search: true, refresh: true},// options
    {}, // settings for edit
    {}, // settings for add
    {}, // settings for delete
    {beforeShowSearch: function(form){
        $('.ui-search',form).click(function(){
            alert("in onSearch");
        });
        $('.ui-reset',form).click(function(){
            alert("in onReset");
        });
     },onClose: function(data){
            alert("in onClose");
     }
    } // search options
);

. Следует учитывать, что ваши onSearch и onResetфункции будут называться после основного обработчика событий, поэтому запрос на поиск или запрос на сброс уже отправлен.Если вам нужна информация до , поиск или сброс использования beforeRequest запроса мне кажется очень хорошим.Если вам нужны правила поиска, вы можете использовать $("#list").jqGrid('getGridParam','postData') или просто $("#list")[0].p.postData.postData имеет searchField, searchOper и searchString (в случае одиночный поиск ) или filters (в случае расширенный поиск ).В случае «Сброс» параметры пусты: «».

0 голосов
/ 05 октября 2010

В качестве обходного пути мы используем событие сетки beforeRequest.

Переменная f будет иметь значение false, если поиск не выполняется, в противном случае будет true:

beforeRequest: function() {
    var m = $("#status-header").is(":visible");
    var f = $("#list").getPostDataItem('_search');

    if ((m && !f) || (!m && f)) {
            $("#status-header").toggle('highlight',{},500);
    }       
},
...