簡體   English   中英

將Javascript變量轉換為jqGrid的postdata

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM