14

私はjqGridの最初の実装に取り​​組んでいます。navGridに表示される標準の追加/編集ボタンを使用していますが、編集/追加フォームで[送信]をクリックしたときにサーバーの応答を処理する方法を特定するのに問題があります。

.navGrid("#product-codes-footer",{edit:true,add:true,del:false},
{afterShowForm:afterShowEdit}, {afterShowForm:afterShowAdd} );

これに関してどこかに欠けている標準のコールバックまたはイベントパラメータはありますか?の呼び出し方法を定義する方法saveRowはありますか、または実装できるデフォルトの成功/エラーコールバックメソッドはありますか?

どんな方向でも大歓迎です!!!

4

3 に答える 3

15

完全に読んで理解できなかったイベントパラメータがいくつかあるようです...

API-> http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing#editgridrow

afterSubmitとafterCompleteのイベントパラメーターを使用すると、サーバーの応答を処理してフォームを更新できます。

-ダン

編集 これは使用されるコードの例です...

.navGrid(
        "#product-codes-footer",
        {edit:true,add:true,del:false}, 
        {
            afterShowForm:afterShowEdit, 
            afterSubmit:processAddEdit,
            beforeSubmit:validateData,
            closeAfterAdd: true,
            closeAfterEdit: true
        }, 
        {
            afterShowForm:afterShowAdd, 
            afterSubmit:processAddEdit,
            beforeSubmit:validateData,
            closeAfterAdd: true,
            closeAfterEdit: true
        } 
);
function afterShowEdit(formId) {

            //do stuff after the form is rendered
        }
        function afterShowAdd(formId) {

            //do stuff after the form is rendered
        }
        function processAddEdit(response, postdata) {
            var success = true;
            var message = ""
            var json = eval('(' + response.responseText + ')');
            if(json.errors) {
                success = false;
                for(i=0; i < json.errors.length; i++) {
                    message += json.errors[i] + '<br/>';
                }
            }
            var new_id = "1";
            return [success,message,new_id];
        }
于 2009-08-05T17:27:39.950 に答える
2

これを行うために私が見たいくつかの方法があります:

jQuery( "#search_results")。jqGrid({
        url:ホスト、
        データ型: "xml"、
        mtype: "GET"、//渡されたパラメータを確認するのに便利です。
        高さ:200、
        幅:500、
..。
..。
等
        gridComplete:function(){
          var ids = jQuery( "#search_results")。getDataIDs();
          if(ids.length Empty Result

'); } そうしないと { $('#jqgrid_error')。hide(); } }、 loadError:function(xhr、st、err){ jQuery( "#jqgrid_error")。html( "タイプ:" + st + ";応答:" + xhr.status + "" + xhr.statusText + '

'); } })。navGrid('#search_results_pager'、 {編集:true、追加:false、del:false、検索:true}、 {{ afterComplete:processed、//processedはユーザーが定義する関数です closeAfterEdit:true、 reloadAfterSubmit:true } );

ドキュメントから:

afterComplete このイベントは、すべてのアクションとイベントが完了し、行がグリッドに挿入または更新された直後に発生します。 afterComplete(serverResponse、postdata、formid)ここで

  • 応答は、サーバーから返されたデータです(存在する場合)
  • postdata配列は、サーバーに送信されるデータです  
  • formidはフォームのIDです  

gridComplete これは、すべてのデータがグリッドにロードされ、他のすべてのプロセスが完了した後に発生します。

loadError xhr、st、err リクエストが失敗した場合に呼び出される関数。関数には3つの引数が渡されます。XMLHttpRequestオブジェクト(XHR)、発生したエラーのタイプ(st)を説明する文字列、およびオプションの例外オブジェクト(err)(発生した場合)です。

便利で役立つPDFドキュメント(少し古い)があります: http://www.scribd.com/doc/17094846/jqGrid

于 2009-08-27T06:21:39.150 に答える
1

あなたはこれを試すことができます:

navGrid('#gridpager',{view:true},{},{closeOnEscape:true},{afterSubmit:processAddEdit}); 
        $.jgrid.search={
        odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','like','does not contain'],        
          sopt:['eq','ne','cn','bw','ew']
        }
于 2011-04-04T07:23:21.930 に答える