2010-09-26 5 views
0

Привет, я создал страницу сообщений пользователя с этим плагином. В сетке отобразятся входящие и входящие сообщения пользователя. вот немного кода:Нужно переопределить параметр url фильтра поиска (_search) в jgrid плагин jquery?

jQuery(document).ready(function() { 

     //...some stuff 
     currentURL = function() { 

      return 'json_member_mail.php?task='+ currentBox; 
        //where current box is either inbox or outbox 
     } 

     //... alot of stuff 

     myGrid = jQuery("#list").jqGrid({ 

     url:currentURL(), 
     datatype: 'json', 
     mtype: 'GET', 

     //  even more stuff .... 

     }).jqGrid('navGrid','#pager', 
     { 
         the lil stuff.... 

      search:true, 

         //the dialog... 
       } 

     // the dialog form editing whatever... 

    );//grid 


});//document.ready 

так тогда, когда пользователь нажимает на исходящем что-то подобное происходит:

jQuery("#list").jqGrid('setGridParam',{ url:currentURL(), postData:{lrt:lastReloadTime} }).trigger("reloadGrid"); //where current URL has the GET param task=outbox 

он работает все замечательно, пока я не использую мои фильтры поиска. например, я ищу сообщения, отправленные пользователем «foo», и все это хорошо, но когда я нажимаю на outbox, он все равно попытается показать мне сообщения, отправленные пользователем «foo», но я хочу, чтобы фильтры поиска были сброшены.

Я попытался загружая диалог поиска по документу готовы и закрыть его немедленно, чтобы получить фильтр() сброс и все это, но он не работает:.-Встроенный-поиск фильтр коробка

myGrid.trigger ('reloadGrid'); имеет такое же поведение, а

.jqGrid('setGridParam',{ url:currentURL(), postData:{_search:'false'} }).trigger("reloadGrid"); 

бы исправить мою проблему, но это не отменит _search параметров.

любые щедрые предложения?

ответ

0

лол, Так что я сделал один из тех глупых ошибок ... где в исходном сообщении я говорю «// диалогового редактирования формы независимо от ...» Я сделал ошибку да я даже не потрудился написать эту часть на здесь, так что я был там было:

}).jqGrid('navGrid','#pager', 
     { 
      edit:false, 
      add:false, 
      del:false, 
      search: true, 
      refresh:true, 
      refreshtext:"Refresh", 
      searchtext:"Search" 
     }, 
     {},//add 
     {}, //edit 
     {}, //delete 
      {}, <---instead of putting search options on this line 
     {  <----I was putting it here on this line 
      overlay:false, 
      closeOnEscape:true, 
         afterShowSearch:... , 
     } /* allow the view dialog to be closed when user press ESC key*/ 
    );//grid 

однако я понял, что после того, как я установил мою проблему с хаком, когда я увидел накладку: ложь не работает, и там было еще оверлей Jquery UI для поиск ...

то, что я сделал, может быть полезно как-то кому-то, кто читает этот день, так что я сделал это:

есть параметр get nd, который является отметкой времени Unix (POSIX), но в миллисекундах (реализация javascripts) в отличие от php и mysql и большинства файлов unix (что в секундах). Я также послал метку последнего времени любой из навигационных ссылок, где щелкнул:

lastReloadTime = new Date().getTime() ; 
jQuery("#list").jqGrid('setGridParam',{ 
     url:currentURL(), 
     postData:{lrt:lastReloadTime 
} 

то в моем файле PHP, который генерирует данные JSON:

$searchOK = 1; 

if($_GET['_search']=='true') { 

    if(isset($_GET['lrt'])){ 

    //so here I check to see if the main mail links have been clicked at all 
    //from the time of the first page load 
    //if not then its all good but if it has check for the time 

     if( ( ($_GET['nd']/1000)-($_GET['lrt']/1000) ) < 1) $searchOK=0; 
    } 

    if($searchOK){ //you can do search since it might be going through pages of a search result 
1

Я рекомендую вам использовать не вызов функции в качестве значения параметра url. Значение параметра будет какулировано только один раз во время инициализации сетки. Вместо этого вы можете использовать

url: 'json_member_mail.php', 
postData: { 
    task: function() {/* return currentBox based on criterias which you have */}, 
    lrt: lastReloadTime 
} 

При необходимости вы можете сделать свойство lrt также в качестве функции.

Если какое-либо свойство postData является функциями , функция будет вызываться по любому запросу ajax. Таким образом, вы можете использовать действительно актуальный значение currentBox при поиске, поисковой странице, сортировке или перепрограммировании страниц.

Если вам нужно перезагрузить jqGrid, вам больше не нужно будет менять url или postData, и вы можете просто позвонить только trigger("reloadGrid").