1

長い検索の後、フォーム編集でjqgridの行を削除することに成功しました。

しかし、2つの小さなことが残っています:

  • 行を削除してグリッドをリロードするにはどうすればよいですか?
  • 行を削除できない場合、情報の表示方法とその理由は?

イベント「afterSubmit」で関数に渡された引数を検索しようとしましたが、これらの引数を操作する方法についての実際の説明はありません。

グリッドの作成:

tableToGrid("#TabUser", {
    caption: 'Gestion des Utilisateurs',
    width: 'auto',
    height: "auto",
    hidegrid: false,
    pager:'#DivUser',
    rowNum:10,
    cellEdit: true,
    cellsubmit: 'remote',
    cellurl: 'Adminuser',
    colModel: [{name:'Id', editable:false, width:50},
               {name:'Login', editable:false, width:150},
               {name:'Nom', editable:true, width:200},
               {name:'Prénom', editable:true, width:200},
               {name:'Rôle', editable:true, width:80, edittype:'select', 
                editoptions: { multiple: false, value:{ADMIN:'ADMIN',GUEST:'GUEST'}}},
               {name:'Email', editable:true, width:200}],
    beforeSubmitCell: function(rowid, celname, value, iRow, iCol) {
        var rowData = jQuery(this).getRowData(rowid); 
        var idUser= rowData['Id'];// On récupère l'Id du user en cours d'édition
        return {idUser:idUser}; }

});

ナビゲーション:

$("#TabUser").navGrid('#DivUser',
        {edit:false,add:false,del:true,search:false},{}, {},
        {width:500, url:'Adminuser',
            reloadAfterSubmit:true,
             onclickSubmit: function(param){ 
                var sr = jQuery('#TabUser').getGridParam('selrow');
                var idUser = jQuery('#TabUser').getCell(sr,'Id');
                return {idUser:idUser}; },
            afterSubmit: function(reponse, data) {
                $("#TabUser").trigger('reloadGrid');
                $("#eData").click(); // clic sur "Annuler"
                return [true,"Supression réussie"];
            }
        });

「応答」と「データ」の値は何ですか?グリッドをリロードする方法は?

この行は、URL「Adminuser」(Javaで記述)を使用してデータベースから効果的に削除されます。

4

1 に答える 1

1

あなたの本当の問題は、行を削除した後にグリッドをリロードしないことだと思います。tableToGrid持っていることによって作成されるグリッドとdatatype: 'local'サーバーからのデータのリロードは必要ありません。

あなたの本当の問題は、jqGridのコードで修正されたjqGrid 3.4.1のバグです(ここを参照)。したがって、削除された行はグリッドから削除されません。問題はコードです。

toarr = postdata.split(",");

バグは、それpostdataがすでに配列であり、文字列ではないことです。したがって、1つの行で例外が発生し、グリッドから行を削除する次の行は実行されません。この問題を修正するには、 githubのjqGridコードの最後のバージョンを使用するか、上記の行(の行番号は8282 jquery.jqGrid.src.js)を次のように変更します。

toarr = postdata;

jquery.jqGrid.src.js または、ここの修正バージョンをダウンロードしてください。その後$("#TabUser").trigger('reloadGrid');、コードから行を削除すると、すべてが正しく機能します。デモを参照してください。

行の「削除」でサーバーからのエラー情報を報告するには、HTTP応答でエラーステータスコードを設定する必要があります。さらに、エラーメッセージとして表示するHTMLコードフラグメントに対するサーバー応答を再フォーマットするerrorTextFormatコールバックを定義できます。追加情報については、回答これまたはこれを参照してください。

于 2012-03-19T17:54:18.793 に答える