【问题标题】:Javascript variable into postdata of jqGridJavascript变量到jqGrid的postdata
【发布时间】:2023-03-16 07:14:01
【问题描述】:

现在我有这个postData: { search: function() { return $("#search").val(); },},

然后我在 jqGrid 函数之上有一个 jQuery 函数,它执行一些逻辑并生成一个字符串变量。现在我只是使用该变量并设置搜索元素的值,如下所示:

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

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

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

});

这行得通,但我希望以不同的方式做到这一点。我只想将我的 jQuery 函数生成的 seachVal 变量直接传递到 postdata 中。

我试过这样但它不起作用 postData:{ 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>

【问题讨论】:

  • 要了解您的问题,您需要了解您在哪里定义变量searchVal 以及您在何时何地为它赋值。所以需要更完整的代码。
  • 谢谢奥列格。我刚刚用更多代码更新了我的问题

标签: javascript jquery jqgrid


【解决方案1】:

我想问题的存在只是因为你没有声明变量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});
});

之后你可以删除&lt;input type='text' id='search' /&gt;

【讨论】:

  • 是的,做到了。现在对我来说很有意义。我尝试了不同的方式,但现在我看到我需要在点击事件之外声明变量。再次感谢!
【解决方案2】:

你为什么不把你的逻辑包装在一个函数中

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

这将被这样调用:

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

所以你只需要重新加载网格

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

显然你的函数 SomeLogic 可以只返回 searchVal

function SomeLogic() { 
   return(searchVal);
}

【讨论】:

  • 感谢LeftX的帮助。我像这样尝试过,但它仍然无法正常工作。网格函数仍然无法访问 SomeLogic 函数。我做错了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2011-05-25
相关资源
最近更新 更多