0

ドロップダウンリストから選択したLogIDに応じて、JQGridを使用してdbからのデータのリストを表示しています。最初のクリックでコンテンツを正しく表示するITS。しかし、その後のすべてのクリックでは何も起こらず、ページは変更もリロードも何もしませんが、スクリプトをデバッグしようとすると、クリックされるたびにボタンクリックイベントが発生することがわかりますが、それでも元に戻りませんデータベースからの変更された LogID データ。よくわかりませんが、 reloadGrid トリガーに関連するものだと思います...

  <script type="text/javascript">
    var firstClick = true;
    $(document).ready(function () {
        $('.editor-date > input').datepicker();
        $('.getdata').click(function () {
            if (!firstClick) {
                $("#GridTable").trigger("reloadGrid");
            }
                firstClick = false;
                $('#GridTable').jqGrid({
                    url: '<%= Url.Action("GetData", "Report") %>',
                    datatype: 'json',
                    mtype: 'POST',
                    colNames: ['Log ID'],
                    colModel: [{ name: 'LogID', index: 'MessageLogID', key: true, formatter: pointercursor }],
                    multiselect: true,
                    sortname: 'LogID',
                    sortorder: "asc",
                    viewrecords: true,
                    pager: $('#pager'),
                    rowNum: 20,
                    rowList: [5, 10, 20, 50],
                    postData: {
                        IdParam: $('#testLogID').val()
                    },
                    jsonReader: {
                        repeatitems: false,
                        id: 'LogID',
                        records: 'TotalRecords',
                        total: 'TotalPages',
                        page: 'CurrentPage',
                        root: 'Rows'
                    },
                    loadError: function (xhr, status, error) {
                        messageBox('Error', 'Error occurred loading data.');
                    },
                    height: 'auto',
                    width: 'auto'
                });

            });

私は同様の問題を見つけましたが、解決策は機能していませ

4

2 に答える 2

3

私はあなたが変わるべきだと思う

postData: {
    IdParam: $('#testLogID').val()
}

postData: {
    IdParam: function () {
        return $('#testLogID').val();
    }
}

(詳細については、私の古い回答を参照してください)。

現在のコードは、最初の呼び出しで$('#testLogID').val() グリッドが作成された時点での値を保存します。その後の呼び出しでは、同じ古い値が使用されます。内部での関数/メソッドの使用法postDataは、グリッドのリロード中に毎回関数を呼び出すことに従います。それは間接的に行われます: jqGrid use $.ajaxwhich uses $.paramwhich calls the function postData.IdParam.

さらに、オプションを追加し、関数内の行gridview: trueを変更pager: $('#pager')pager: "#pager"て移動することをお勧めします。の一部が欠けています。一度グリッドを作成し、後で使用する必要があることを理解することが重要です。var firstClick = true;$(document).ready(function () {...});} else {if (!firstClick) {$('#GridTable').jqGrid({...});$("#GridTable").trigger("reloadGrid");

于 2013-01-20T21:36:31.140 に答える