1

私はjqgridのスターターです。jqgridデータをロードするためにこのコードを記述し、挿入と更新のためにカスタムパネルpapupを表示するためのアイコンボタンを作成します。

  $(function () {
            $("#txtFullName").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "AutoCompleteHandler.ashx",
                        dataType: "json",
                        data: {
                            term: request.term,
                            Person: 1
                        },
                        contentType: "application/json",
                        converters: {
                            "json json": function (msg) {
                                return msg.hasOwnProperty('d') ? msg.d : msg;
                            }
                        },
                        success: function (data) {
                            response($.map(data, function (item) {
                                return {
                                    label: item.Label,
                                    value: item.Value,
                                    id: item.Id
                                }
                            }));
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(textStatus);
                        }
                    });
                },
                minLength: 1,
                change: function (event, ui) { $("#PersonId").val(ui.item.id); }

            });

            var grid = $('#list');
            grid.jqGrid({
                url: 'jQGridHandler.ashx',
                editurl: 'jQGridHandler.ashx',
                postData: { ActionPage: 'SecurityUser', Action: 'Fill' },
                ajaxGridOptions: { cache: false },
                loadonce: true,
                direction: "rtl",
                pgtext: "صفحه {0} از {1}",
                datatype: 'json',
                height: 490,
                colNames: ['کد کاربری', 'شماره پرسنلی', 'مدیر؟', 'نام کاربری ', 'رمز عبور', 'قفل؟', 'تاریخ ایجاد', ],
                colModel: [
                        { name: 'USER_ID', width: 100, sortable: true, hidden: true },
                        { name: 'PERSON_ID', width: 200, sortable: true },
                        { name: 'USER_TYPE', width: 100, sortable: true, editable: true, edittype: 'checkbox', editoptions: { value: "True:False" }, formatter: "checkbox", formatoptions: { disabled: false} },
                        { name: 'USER_NAME', width: 100, sortable: true },
                        { name: 'USER_PASSWORD', width: 100, sortable: true },
                        { name: 'USER_LOCK', width: 50, sortable: true, editable: true, edittype: 'checkbox', editoptions: { value: "True:False" }, formatter: "checkbox", formatoptions: { disabled: false} },
                        { name: 'CREATE_DATE', width: 30, sortable: true, hidden: true },

                        ],
                gridview: true,
                rowNum: 10,
                rowList: [10, 20, 30],
                pager: '#pager',
                sortname: 'USER_ID',
                viewrecords: true,
                sortorder: 'ASC',
                caption: 'درخواست ها......',
                rownumbers: true
            });
            grid.jqGrid('navGrid', '#pager', { add: false, edit: false, del: true }, {}, {},
                { url: "JQGridHandler.ashx?ActionPage=SecurityUser&Action=Delete", reloadAfterSubmit: false }, { multipleSearch: true, overlay: false, width: 460 })
                .navButtonAdd("#pager", {
                    caption: "",
                    buttonicon: "ui-icon-plus",
                    onClickButton: function () {
                        $("#PersonId").val('');
                        $("#chkAdmin").attr("checked", 'false');
                        $("#txtUserName").val('');
                        $("#txtPassword").val('');
                        $("#chkActive").attr("checked", 'false');
                        $("#hdnUserId").val('');


                        $("#btnUpdate").css("display", 'none');
                        $("#btnAdd").css("display", 'inline');
                        $("#POPUP1").dialog({ width: 730 });
                    },
                    position: "first"

                })
                .navButtonAdd("#pager", {
                    caption: "",
                    buttonicon: "ui-icon ui-icon-pencil",
                    onClickButton: function () {
                        $("#PersonId").val('');
                        $("#chkAdmin").attr("checked", 'false');
                        $("#txtUserName").val('');
                        $("#txtPassword").val('');
                        $("#chkActive").attr("checked", 'false');
                        $("#hdnUserId").val('');



                        var myGrid = grid;
                        var selRowId = myGrid.jqGrid('getGridParam', 'selrow');

                        $("#PersonId").val(myGrid.jqGrid('getCell', selRowId, 'PERSON_ID'));
                        $("#chkAdmin").attr("checked", myGrid.jqGrid('getCell', selRowId, 'USER_TYPE'));
                        $("#txtUserName").val(myGrid.jqGrid('getCell', selRowId, 'USER_NAME'));
                        $("#txtPassword").val(myGrid.jqGrid('getCell', selRowId, 'USER_PASSWORD'));
                        $("#chkActive").attr("checked", myGrid.jqGrid('getCell', selRowId, 'USER_LOCK'));
                        $("#btnAdd").css("display", 'none');
                        $("#btnUpdate").css("display", 'inline');
                        $("#hdnUserId").val(myGrid.jqGrid('getCell', selRowId, 'USER_ID'));

                        $("#POPUP").dialog({ width: 400 });

                    },
                    position: "first"

                });


            function add() {
                $.ajax({
                    url: 'JQGridHandler.ashx',
                    contentType: "application/json; charset=utf-8",
                    data: { PERSON_ID: $("#PersonId").val(), USER_TYPE: $("#chkAdmin").is(":checked"),
                        USER_NAME: $("#txtUserName").val(), USER_PASSWORD: $("#txtPassword").val(),
                        USER_LOCK: $("#chkActive").is(":checked"), ActionPage: 'SecurityUser', Action: 'Insert'
                    },
                    dataType: "json",
                    success: function (data) {
                        $("#list").trigger("reloadGrid", [{ current: true}]);    ??????
                    }

                });
            }
            function update() {

                $.ajax({
                    url: 'JQGridHandler.ashx',
                    contentType: "application/json; charset=utf-8",
                    data: { USER_ID: $("#hdnUserId").val(), PERSON_ID: $("#PersonId").val(), USER_TYPE: $("#chkAdmin").is(":checked"),
                        USER_NAME: $("#txtUserName").val(), USER_PASSWORD: $("#txtPassword").val(),
                        USER_LOCK: $("#chkActive").is(":checked"), ActionPage: 'SecurityUser', Action: 'Update'
                    },
                    dataType: "json",
                    success: function (data) { }

                });
            }
            $("#btnAdd").click(function () {
                add();

             //$("#list").jqGrid("reloadGrid");

            });
            $("#btnUpdate").click(function () {
                update();
            });
        });

およびhtmlフォームjqGridおよびポップアップパネルを作成するため

 <div>
        <table id="list">
        </table>
        <div id="pager">
        </div>

        <div id="POPUP" dir="rtl">
            <table width="100%" class="tbl">
                <tr>
                    <td>
                       FullName
                    </td>
                    <td>
                        <input type="text" id="txtFullName" />
                    </td>
                </tr>
                <tr>
                    <td>
                        PersonId
                    </td>
                    <td>
                        <input type="text" id="PersonId" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="checkbox" id="chkAdmin" />IsAdmin?
                    </td>
                </tr>
                <tr>
                    <td>
                       UserName
                    </td>
                    <td>
                        <input type="text" id="txtUserName" />
                    </td>
                </tr>
                <tr>
                    <td>
                       Password
                    </td>
                    <td>
                        <input type="password" id="txtPassword" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="checkbox" id="chkActive" checked="checked" />IsActive
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input id="btnAdd" type="button" value="Add" />&nbsp;&nbsp;
                        <input id="btnUpdate" type="button" value="Edit" />&nbsp;
                        <br />
                        <input id="hdnUserId" type="hidden" />
                    </td>
                </tr>
            </table>
        </div>
    </div>

ユーザーがbtnAddをクリックして、データベースjqGridデータの再読み込みに挿入を記録するときに必要です(jqGridデータを更新する必要があります)。しかし、2つのエラーが発生します

 Error: no element found
    Source File: http://localhost:1041/Clerance_New/JQGridHandler.ashx?PERSON_ID=1001&USER_TYPE=false&USER_NAME=tttt&USER_PASSWORD=tttt&USER_LOCK=true&ActionPage=SecurityUser&Action=Insert
    Line: 1

and
Error: uncaught exception: jqGrid - No such method: reloadGrid

とリロードのために?????? 行がハンドラーでサーバー側のコードを実行していません。理由はわかりません。

私を助けてください。皆さんありがとう

4

1 に答える 1

4

標準的なフォーム編集を使用する代わりに、比較的複雑なコードを記述した理由はわかりませんが、何らかの重要な理由があることは確かです。

コード

$("#list"). $("#list").jqGrid("reloadGrid");

決定的に間違っています。何らかの理由でコメントした正しいコード

$("#list").trigger("reloadGrid", [{current: true}]);

さらに、使用する関数内または関数内successの対応する$.ajaxリクエストのコールバック内に呼び出しを配置することが重要です。addupdate

更新:loadonce: trueオプションを使用したことがわかりました。これは、データがサーバーから 1 回読み込まれることを意味します。最初の読み込み後、 の値はdatatypeに変更され'local'ます。グリッドの次のリロードはローカルで行われます。サーバーからデータをもう一度リロードする必要がある場合は、datatype初期値 (この場合は「json」)にリセットしてから、グリッドをリロードする必要があります。詳細については、回答を参照してください。

于 2012-05-01T20:17:50.690 に答える