как я могу вызвать метод обновления - PullRequest
1 голос
/ 18 марта 2011

вопрос такой: я инициализирую jqgrid без postData и устанавливаю hiddengrid: true,

я хочу сначала инициализировать таблицу без запроса,затем запросит данные вручную,

js

var showRoleList = function($entityList,pagerId)
{
    $entityList.jqGrid({
        url:'servlet/RoleAction',
        datatype: 'json',
        height: 'auto',
        jsonReader:
        {
            repeatitems : false,
            userdata: "rows"
        },
        colNames:['ID','roleName','detail','action'],
        colModel:
        [
            {name:'id',index:'id',hidden:true},
            {name:'name',index:'name', width:100,sortable:false},
            {name:'description',index:'description', width:400,sortable:false},
            {name:'action',index:'action', width:40,sortable:false}
        ],
        rowNum:10,
        altRows:true,
        autowidth:true,
        mtype: "POST",
        rownumbers: true,
        rownumWidth: 30,
        imgpath:'css/images',
        sortorder:'desc',
        viewrecords: true,
         multiselect:true,
        loadui:'disable' ,
        gridview:true,
        hiddengrid:true,
        page:1,
        pginput:true,
        pager: pagerId,
        sortname: 'dateEntered',
        altclass:'ui-priority-secondary_1',
    });
}

showRoleList($("#entityList0"),"#pEntityList0");
**$entityList0.jqGrid("setGridParam", {  
       postData:{ACTION:'userRelation',userId:user.id,typeName:'role',flag:true},
});**

 **$entityList0.trigger("reloadGrid", [{page:1}]);**

html :

<table id="entityList0"></table>
<div id="pEntityList0"></div>

, но не получится, когда явызванный триггер, запрос может быть отправлен, но без postData

никакие параметры не могут публиковать на сервере

, но если я нажму кнопку обновления, это может сработать

как я могу решить этот вопрос

спасибо за ответ

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Я не могу воспроизвести вашу проблему. Единственная ясная синтаксическая ошибка - flag:true},}), которую нужно заменить на flag:true}}) (убрать запятую) Таким же образом вы должны заменить altclass:'ui-priority-secondary_1',} на altclass:'ui-priority-secondary_1'}.

Весь ли код внутри $(document).ready(function() {/*here*/});?

В коде переменные user и $entityList0 не инициализируются. Вы уверены, что используете set $entityList0=$("#entityList0") и инициализируете user хотя бы как {} в приведенном выше коде?

Также следует удалить устаревший параметр imgpath и заменить, например, sortname: 'dateEntered' на sortname: 'name'.

Если вы опубликуете какие-либо тестовые данные, которые вы используете, я могу дать вам ссылку на код, который вы опубликовали и который работает на меня без проблем.

ОБНОВЛЕНО : ОК! Теперь, имея код, который можно проверить, я вижу, в чем ваша проблема. Проблема в том, что вы пытаетесь запустить второй запрос Ajax до того, как первый будет закончен .

Ваша сетка имеет datatype: 'json'. В строке showRoleList($entityList0,'#pEntityList0'); вы запускаете первый ajax-запрос, а затем немедленно запускаете второй с $entityList0.trigger("reloadGrid"). Первый запрос установил для внутренней переменной $("#entityList0")[0].grid.hDiv.loading значение true, а все остальные запущенные вами запросы будут просто игнорироваться до истечения времени ожидания или ответа или ошибки с сервера.

Возможно, вы действительно не хотите отправлять первый запрос, пока не установите параметры postData. Поэтому вы должны использовать datatype: 'local' во время инициализации jqGrid (в функции showRoleList). Затем вы должны установить datatype: 'json' дополнительно к postData:

$entityList0.jqGrid(
    "setGridParam",
    {
        datatype: 'json',
        postData: {
            ACTION:'userRelation',
            userId:'1111',
            typeName:'role',
            flag:true
        }
    }
);

В качестве альтернативы вам необходимо прервать предыдущий вызов ajax перед перезагрузкой сетки. Если это действительно необходимо, я могу объяснить, как вы можете это реализовать.

0 голосов
/ 18 марта 2011

хорошо, я просто делаю test.html

 <html ... 
    <script  type="text/javascript"> 
    var $entityList0;  
     $(function(){

       $entityList0 = $("#entityList0");          
       showRoleList($entityList0,'#pEntityList0');         
       $entityList0.jqGrid("navGrid",'#pEntityList0',{});         
       $entityList0.jqGrid("setGridParam",
        {     
             postData:{ACTION:'userRelation',userId:'1111',typeName:'role',flag:true}
        }).showCol("action");   
        $entityList0.trigger("reloadGrid"); 
        });  
var showRoleList = function($entityList,pagerId) {
            $entityList.jqGrid({
                url:'servlet/RoleAction',
                datatype: 'json',       height: 'auto',
                jsonReader:         {
                    repeatitems : false,
                    userdata: "rows"
                },
                colNames:['ID','roleName','detail','actiokn'],
                colModel:
                [
                    {name:'id',index:'id',hidden:true},
                    {name:'name',index:'name', width:100,sortable:false},
                    {name:'description',index:'description',
        width:400,sortable:false},
                    {name:'action',index:'action',
        width:40,sortable:false}
                ],
                rowNum:10,
                altRows:true,
                autowidth:true,
                mtype: "POST",
                rownumbers: true,       rownumWidth: 30,
                //imgpath:'css/images',
                sortorder:'desc',
                viewrecords: true,
                 multiselect:true,
                loadui:'disable' ,
                gridview:true,
                hiddengrid:true,
                page:1,
                pginput:true,
                pager: pagerId,
                sortname: 'dateEntered',        altclass:'ui-priority-secondary_1',
            }); } </script> 
</head> 
<body>
          <table id="entityList0"></table>
           <div id="pEntityList0"></div>        
</body> 
</html>

при первом открытии URL test.html

    HeadersPostPutHTMLXML
    application/x-www-form-urlencoded
    _search false
    nd  1300458295847
    page    1
    rows    10
    sidx    dateEntered
    sord    desc

_search=false&nd=1300458295847&rows=10&page=1&sidx=dateEntered&sord=desc

а затем я нажимаю кнопку обновления

HeadersPostPutHTML
application/x-www-form-urlencoded
ACTION  userRelation
_search false
flag    true
nd  1300458310960
page    1
rows    10
sidx    dateEntered
sord    desc
typeName    role
userId  1111

_search=false&nd=1300458310960&rows=10&page=1&sidx=dateEntered&sord=desc&ACTION=userRelation&userId=1111&typeName=role&flag=true

Вы можете проверить это

Вы видите, что результат отличается
это простая страница, вы можете проверить легко! если вы можете найти что-то не так, пожалуйста, скажите мне спасибо

...