2012-02-25 72 views
0

的POSTDATA現在我有執行某種邏輯,併產生一個字符串變量的jqGrid函數高於此postData: { search: function() { return $("#search").val(); },},JavaScript變量成的jqGrid

我然後有jQuery函數。現在,我只是把這個變量和設置搜索元素的值是這樣的:

$("#startSearch").click(function() { 

    $("#search").val(searchVal); 

    $("#grid").trigger("reloadGrid"); 

}); 

這工作,但我跳以不同的方式做到這一點。我只想將我的jQuery函數生成的seachVal變量傳遞給postdata。

我試過這樣,但它不工作POSTDATA:{ search: function() { return searchVal; },},

我收到說沒有定義searchVal錯誤。我確信searchVal變量是全局變量,但它仍然不起作用。

這是可能的還是我只是看着這個錯誤?

任何幫助將是偉大的。

感謝

UPDATE:

下面是一個剝離下來的網頁版本:

<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> 
+0

爲了理解你的問題,你需要知道*你在哪裏定義變量'searchVal',以及*在哪裏以及何時給它賦值。所以更完整的代碼是必需的。 – Oleg 2012-02-25 17:20:24

+0

謝謝奧列格。我只是用更多代碼更新了我的問題 – Sequenzia 2012-02-25 21:23:35

回答

2

我想這個問題只是存在,因爲你沒有申報的變量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' />

+0

是的,它做到了。現在對我來說很有意義。我嘗試了不同的方式,但現在我發現我需要在click事件之外聲明變量。再次感謝! – Sequenzia 2012-02-25 21:45:17

+0

@Sequenzia:不客氣! – Oleg 2012-02-25 21:49:45

1

你爲什麼不只是包裝在一個函數的邏輯

function SomeLogic() { 
    return("some logic here!"); 
} 

這將被這樣調用:

postData: { search: function() { return SomeLogic() } }, 

,所以你只需要重裝電網

$("#startSearch").click(function() { 
    $("#grid").trigger("reloadGrid"); 
}); 

明顯的功能SomeLogic可以只返回searchVal

function SomeLogic() { 
    return(searchVal); 
} 
+0

感謝您的幫助LeftX。我試過這樣但它仍然無法正常工作。網格功能仍然無法訪問SomeLogic功能。我做錯了什麼。 – Sequenzia 2012-02-25 21:24:45