0

この問題と同じjqGridテーブルがあり、サーバーからの情報をロードしますが、ローカルに保存するため、オプションのデータ型を「ローカル」に設定しています。

また、この機能を使用するように削除ボタンを設定しました。データベースとグリッドから行を削除する必要があります。

var grid = $('#grid');

    grid.jqGrid('navButtonAdd', '#pager', 
    {
        caption: "",
        buttonicon: "ui-icon-trash",
        position: "first",
        title: "Delete",
        cursor: "pointer",
        id: 'del_list',

        onClickButton: function del(event) {
            var rowID = grid.jqGrid('getGridParam', 'selrow');
            if (rowID === null) {
                $('<div title="Error"><p>Error</p></div>').dialog({
                    modal: true,
                    width: 350,
                    buttons: {Aceptar: function () {
                        $(this).dialog("close");
                    }},
                    dialogClass: "ui-jqdialog"
                });
            }
            else {
                grid.jqGrid('delGridRow', rowID, 
                {
                    width: 400,
                    delicon: [true, "left", "ui-icon-cancel"],
                    cancelicon: [true, "left", "ui-icon-close"],
                    beforeShowForm: function (form) {
                        SetFormsSize('#delmodtGrid');
                    },
                    caption: "Delete",
                    msg: "asdasdasd",
                    onclickSubmit: function (params, postdata) { 

                        var code = parseInt(grid.find('tr:eq(' + rowID + ')').find('td:eq(0)').text());
                        var ver = parseInt(grid.find('tr:eq(' + rowID + ')').find('td:eq(2)').text());

                        var add_data = {ProjectID: code, VersionID: ver};
                        return add_data;
                    },
                    afterComplete: function (response, postdata) {
                        if (response.responseText === "Success") {
                            $('<div title=""><p>asdasdas</p></div>').dialog({
                                modal: true,
                                width: 400,
                                buttons: {Aceptar: function () {
                                    $(this).dialog("close");
                                }},
                                dialogClass: "ui-jqdialog"
                            });
                        }
                        else {
                            $('<div title="Error: ' + response.responseText + '"><p>asdasdasd</p></div>').dialog({
                                modal: true,
                                width: 400,
                                buttons: {Aceptar: function () {
                                    $(this).dialog("close");
                                }},
                                dialogClass: "ui-jqdialog"
                            });
                        }                    
                    }
                });
            }            
        }
    });

データベースでの削除を処理するサーバー側のアクションがあります。それには try-catch 文があり、例外はスローされません。Firebug を使用すると、POST 要求が成功し、応答が返されます (これは、afterSubmit オプション関数を追加し、postdata をチェックした結果です)。したがって、問題は jqGrid の設定にあると思います。

サーバー側のコードを通過した後 (そして、設定すると、afterSubmit イベントが発生した後)、次のエラーが表示されます (スペイン語からの翻訳):

実行時エラー Microsoft JScript: オブジェクトはプロパティまたはメソッド 'split' を受け入れません

文中の 331 行目の jquery.jqGrid.min.js に影響します。

if(d[e.p.id].reloadAfterSubmit&&e.p.datatype!="local")
   a(e).trigger("reloadGrid");
else{
   var A=[];
   A=H.split(",");
   ...
}

完全な関数から。エラーが発生する部分は、else 句の 2 番目の文です。

4

1 に答える 1

0

気にしないでください、解決策はここにありました:行を削除するときのjqgridエラー、それはここに答えを導きます:http://www.trirand.com/blog/?page_id=393/bugs/4-2-0-g-split-is -not-a-function-error/

于 2012-09-10T19:25:57.150 に答える