[英]Javascript variable into postdata of jqGrid
現在我有這個postData: { search: function() { return $("#search").val(); },},
postData: { search: function() { return $("#search").val(); },},
然后,我在jqGrid函數上方有jQuery函數,該函數執行一些邏輯並產生一個字符串變量。 現在,我只是使用該變量並按如下所示設置search元素的值:
$("#startSearch").click(function() {
$("#search").val(searchVal);
$("#grid").trigger("reloadGrid");
});
這可行,但是我希望以不同的方式來做。 我只想將我的jQuery函數產生的seachVal變量直接傳遞到postdata中。
我這樣嘗試過,但postData無法正常工作: { search: function() { return searchVal; },},
{ search: function() { return searchVal; },},
我收到一條錯誤消息,說未定義searchVal。 我確保searchVal變量是全局變量,但仍無法正常工作。
這可能嗎,還是我只是看錯了?
任何幫助都會很棒。
謝謝
更新:
這是頁面的精簡版本:
<fieldset>
<input type='text' id='search' />
<button type='button' id='startSearch'>Search</button>
</fieldset>
<script type="text/javascript">
$(function(){
$("#startSearch").click(function() {
serchVal = 'transID > "5"';
$("#search").val(serchVal);
$("#grid").trigger("reloadGrid");
});
$("#list").jqGrid({
url:'data.cfc?method=gridData',
datatype: 'json',
mtype: 'POST',
jsonReader : {
root: "rows",
page: "currentpage",
total: "totalpages",
records: "totalrecords",
repeatitems: false,
id: "0",
},
postData: { search: function() { return $("#search").val(); },},
colModel :[
{name:'transid', label:'Trans ID', width:60},
{name:'companyname', label:'Company Name', width:245},
{name:'companycode', label:'Company Code', width:245},
{name:'datasource', label:'Datasource', width:245}
],
pager: '#pager',
rowList:[10,50,100],
rowNum:'10',
height:221,
sortname: 'transid',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Get Trans',
altRows: false,
autowidth: true,
forceFit: true,
rownumbers: true,
scroll: false,
sortable: true
});
$("#list").jqGrid('navGrid','#pager',{edit:false,add:false,del:false,search:false,view:true});
});
</script>
<table id="grid"></table>
<div id="pager"></div>
我想這個問題的存在僅僅是因為您沒有聲明變量serchVal
(您可能意味着searchVal
)。 您可以嘗試將代碼修改為以下內容
$(function () {
var searchVal = '';
$("#startSearch").click(function () {
searchVal = 'transID > "5"';
$("#grid").trigger("reloadGrid");
});
$("#list").jqGrid({
url: 'data.cfc?method=gridData',
datatype: 'json',
mtype: 'POST',
jsonReader : {
page: "currentpage",
total: "totalpages",
records: "totalrecords",
repeatitems: false,
id: "0"
},
postData: { search: function () { return searchVal; }},
colModel: [
{name: 'transid', label: 'Trans ID', width: 60},
{name: 'companyname', label: 'Company Name', width: 245},
{name: 'companycode', label: 'Company Code', width: 245},
{name: 'datasource', label: 'Datasource', width: 245}
],
pager: '#pager',
rowList: [10, 50, 100],
rowNum: 10,
height: 221,
sortname: 'transid',
viewrecords: true,
gridview: true,
caption: 'Get Trans',
autowidth: true,
rownumbers: true,
sortable: true
}).jqGrid('navGrid', '#pager',
{edit: false, add: false, del: false, search: false, view: true});
});
之后,您可以刪除<input type='text' id='search' />
。
為什么不將邏輯包裝在函數中
function SomeLogic() {
return("some logic here!");
}
它將被這樣稱呼:
postData: { search: function() { return SomeLogic() } },
所以你只需要重新加載網格
$("#startSearch").click(function() {
$("#grid").trigger("reloadGrid");
});
顯然,您的功能SomeLogic可以返回searchVal
function SomeLogic() {
return(searchVal);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.