您好我已经使用此插件创建了一个用户消息页面。 网格将显示用户收件箱和用户发件箱(已发送)邮件。这是一个小代码:
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'发送的消息,这一切都很好,但是当我点击发件箱时,它仍会尝试向我显示用户'foo'发送的消息,但我希望重置搜索过滤器。 / p>
我尝试在文档就绪上加载搜索对话框,然后立即将其关闭以获取过滤器()。重置以及所有这些但它不起作用:-buin-in-search-filter-box
myGrid.trigger( 'reloadGrid');
具有相同的行为.jqGrid('setGridParam',{ url:currentURL(), postData:{_search:'false'} }).trigger("reloadGrid");
会解决我的问题但它不会覆盖_search参数。
任何慷慨的建议?
答案 0 :(得分: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")
即可。
答案 1 :(得分: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
然而我意识到在我看到叠加层后用黑客修复了我的问题:false无法正常工作且仍有jQuery UI叠加层用于搜索......
我所做的对于某一天阅读这一天的人来说可能会有所帮助,所以我做的是:
有一个get参数nd是一个Unix时间戳(POSIX),但是在几毫秒内(javascripts实现)不像php和mysql以及大多数unix东西(以秒为单位)。我还发送了上次点击的任何导航链接的时间戳:
lastReloadTime = new Date().getTime() ;
jQuery("#list").jqGrid('setGridParam',{
url:currentURL(),
postData:{lrt:lastReloadTime
}
然后在我生成json数据的php文件中:
$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