Переменная Javascript в постданные jqGrid - PullRequest
0 голосов
/ 25 февраля 2012

Прямо сейчас у меня есть это postData: { search: function() { return $("#search").val(); },},

Затем у меня есть функция jQuery над функцией jqGrid, которая выполняет некоторую логику и создает строковую переменную.Сейчас я просто беру эту переменную и устанавливаю значение элемента поиска следующим образом:

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

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

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

});

Это работает, но я прыгал, чтобы сделать это по-другому.Я хочу просто передать переменную seachVal, которую моя функция jQuery создает прямо в 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>

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Полагаю, проблема существует только потому, что вы не объявили переменную 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' />.

1 голос
/ 25 февраля 2012

Почему бы вам просто не обернуть свою логику в функцию

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

который будет называться так:

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

так что вам просто нужно перезагрузить сетку

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

очевидно, ваша функция SomeLogic может просто вернуть searchVal

function SomeLogic() { 
   return(searchVal);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...