0

インラインモードで、新しい行を追加し、新しい値を編集してから、[保存]ボタンをクリックしてサーバーとローカルに移動します。ただし、行を編集する代わりに[編集]ボタンをクリックして新しい行を編集し続けると、新しい行が追加されます。たとえば、最初に新しい行を追加します:{ aa,bb,cc}、次に{ aaaa,bb,cc}[編集]ボタンをクリックして編集することで変更しますが、jqGridoper=addはサーバーにを送信します。これにより、新しい行が追加されます。理由がわかりませんか?

次のようにコーディングします。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0   Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ddddd</title>
<link
href="/education2/jqGrid4.4/themes/redmond/jquery-ui-1.8.2.custom.css"
rel="Stylesheet" />
<link href="/education2/jqGrid4.4/themes/ui.jqgrid.css" rel="Stylesheet" />
<script src="/education2/jqGrid4.4/js/jquery-1.7.2.js"
type="text/javascript"></script>
<script type="text/javascript"
src="/education2/jqGrid4.4/js/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript"
src="/education2/jqGrid4.4/js/i18n/grid.locale-cn.js"></script>

<script src="/education2/jqGrid4.4/js/jquery.jqGrid.src.js"
type="text/javascript"></script>

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery("#gridTable").jqGrid({
        url : '/education2/json/searchStudent',
        mtype : "POST",
        datatype : "json",
        colNames : [ 'studentId','studentNo', 'name', 'class'],
        colModel : [ {
            name : 'studentId',
            index : 'studentId',
            width : 55,
            hidden : true,
            hidedlg : true
            key : true,
            editable : true
        }, {
            name : 'studentNo',
            index : 'studentNo',
            width : 150,
            editable : true         
        }, {
            name : 'studentName',
            index : 'studentName',
            width : 150,
            align : "right",
            editable : true
        }, {
            name : 'className',
            index : 'className',
            width : 150,
            align : "right",
            editable : true,
            edittype : 'select',
            editoptions : {
                dataUrl : "/education2/json/classNameStudent"
            }   
        }],
        jsonReader : {
            root : "gridModel",
            records : "record",
            repeatitems : false
        },
        prmNames : {
            search : "search",
            id : "id" 
        },
        rowNum : 10,
        rowList : [ 10, 20, 30 ],
        height : 400,
        //          multiselect : true,
        //          multiboxonly : true,
        pager : jQuery('#gridPager'),
        sortname : 'studentId',
        viewrecords : true,
        altRows : true,
        sortorder : "desc",
        editurl : "/education2/json/editStudent",
        caption : "student"
    });

    jQuery("#gridTable").jqGrid('navGrid', "#gridPager", {
        edit : false,
        add : false,
        del : true
    }, {}, {}, {}, {
        caption : "find",
        Find : "find",
        closeAfterSearch : true
    });

    jQuery("#gridTable").jqGrid('inlineNav', "#gridPager", {

        editParams : {
            successfunc : succesfunc1,
            restoreAfterError : false
        }
    });
});

var succesfunc1 = function(response) {
    var result = eval('(' + response.responseText + ')');
    if (result.success == true) {
        alert("success!");
        return true;
    } else {
        alert(result.message);
        return false;
    }
};


};
</script>
</head>
<body>

<table id="gridTable"></table>
<div id="gridPager"></div>
<br />

</body>
</html>

アップデート

$('#'+$.jgrid.jpID(rowid).attr('id', result1.new_id)は新しい行の行IDを更新するために使用し(質問「jqGridにインライン追加した後に列を更新する方法」の@olegからのアイデア)、サーバー上でoper=new && id !="new_row"それを編集するか新しい行を追加するかを決定するために使用します。うまく動作しますが、aftersavefuncメソッドを追加する必要があります。

上記の質問は私にはよく理解されていません。私がしていることは、質問をバイパスすることだけです。

私の問題は、新しい行を追加してから変更することです。jqgridはそれを変更せず、jqgridは"oper=add"サーバーにを送信します。これは、サーバーが新しい行を追加することを意味します。

別の質問は次のとおりです。

jQuery("#gridTable").jqGrid('inlineNav', "#gridPager", {

    addParams : {
        addRowParams : {
            keys : true,
            url : '/education2/json/editStudent1?inlinePoer=add'
        }
    },
    editParams : {
        url : '/education2/json/editStudent?inlinePoer=edit',
    }
});

予想とは異なり、インラインナビゲーターで[追加]、[編集]、または[保存]ボタンをクリックすると、URL:のみ'/education2/json/editStudent?inlinePoer=edit'が起動されます。URLのようです:'/education2/json/editStudent1?inlinePoer=add'解雇できません、なぜですか?誰かが私を助けてもらえますか?

私はfirebugとIEを使用しています。

4

1 に答える 1

0

私はあなたが欠けているのは次の行でedit:trueを与えていると思います

jQuery("#gridTable").jqGrid('inlineNav', "#gridPager", {

        editParams : {
            successfunc : succesfunc1,
            restoreAfterError : false
        }
    });

このリンクを確認してください

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#inlinenavここでパラメーターを確認してください。編集をtrueとして実行しようとしているかどうかはわかりませんが、正常に機能する場合は、すばらしいです...それ以外の場合は、事務処理が完了したときにコードを調べます。

于 2012-08-07T14:02:20.050 に答える