Серверная функция вызывается только один раз в jqGrid - PullRequest
0 голосов
/ 19 февраля 2012

Я поместил jqgrid на страницу.В Jqgrid помещен столбец, который мне нужен, когда пользователь нажимает на столбец, Fill Other Jqgrid. Теперь, когда я нажимаю на нужный столбец.Только первый раз Заполните второй JQGrid, но в следующий раз код на стороне сервера не запустится.Код написан следующим образом

var firstButtonColumnIndex = 0;
            grid = $('#list'); buttonNames = {};
            grid.jqGrid({
                url: 'jQGridHandler.ashx?Request=1',
                loadonce: true,
                direction: "rtl",
                pgtext: "صفحه {0} از {1}",
                datatype: 'json',
                height: 250,
                colNames: ['شماره درخواست', 'شماره اموال', 'شرح دستور کار', 'تاریخ دستور کار', 'زمان دستور کار', 'ملاحظات', '', ''],
                colModel: [

                        { name: 'WorkOrderNo', width: 100, sortable: true },
                        { name: 'AssetNo', width: 100, sortable: true },
                        { name: 'WorkDescription', width: 400, sortable: true },
                        { name: 'WorkOrderDate', width: 80, sortable: true },
                        { name: 'WorkOrderTime', width: 80, sortable: true },
                        { name: 'Remark', width: 100, sortable: true },
                        { name: 'del', width: 20, sortable: false, search: false,
                            formatter: function () {
                                return "<span class='ui-icon ui-icon-trash'></span>";
                            }
                        },
                        { name: 'details', width: 20, sortable: false, search: false,
                            formatter: function () {
                                return "<span class='ui-icon ui-icon-document'></span>";
                            }
                        }

                    ],
                gridview: true,
                rowNum: 10,
                rowList: [10, 20, 30],
                pager: '#pager',
                //  sortname: 'WorkOrderNo',
                viewrecords: true,
                sortorder: 'asc',
                caption: 'درخواست ها...........',
                rownumbers: true,
                beforeSelectRow: function (rowid, e) {
                    var iCol = $.jgrid.getCellIndex(e.target);
                    if (iCol == 7) {
                        //alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]);
                        // $('img').each(function () {
                        $("#workRequestPopUp").draggable();
                        //  });

                    } else if (iCol == 8) {
                        workOrderId = rowid;

                        $("#tblRequestWorks tr").remove();
                        $("#tblRequestWorks").jqGrid({
                           // url: 'jQGridHandler.ashx?RequestWorksFill=1&workOrderId=' + workOrderId,
                            url: "PublicHandler.ashx?Request=1&workOrderId: rowid",
                            direction: "rtl",
                            pgtext: "",
                            datatype: 'json',
                            height: 250,
                            colNames: ['نام کار', 'نام واحد', 'سرپرست واحد', 'تعداد', 'پایان کار', ''],
                            colModel: [

                        { name: 'WorkName', width: 300, sortable: true },
                        { name: 'SectionName', width: 100, sortable: true },
                        { name: 'SectionSupervisor', width: 100, sortable: true },
                        { name: 'RequestCount', width: 80, sortable: true },
                        { name: 'FinishWork', width: 100, sortable: true },
                        { name: 'details', width: 20, sortable: false, search: false,
                            formatter: function () {
                                return "<span class='ui-icon ui-icon-document'></span>";
                            }
                        }

                    ],

                            rowNum: 10,
                            rowList: [10, 20, 30],

                            sortorder: 'asc',
                            caption: 'Test',
                            rownumbers: true,
                            beforeSelectRow: function (rowid, e) {
                                var iCol = $.jgrid.getCellIndex(e.target);
                                if (iCol == 6) {
                                    alert(rowid);
                                    Fill12(rowid);
                                } else if (iCol == 8) {
                                    alert(rowid);
                                    Fill12(rowid);

                                    return true;

                                    // return (iCol >= firstButtonColumnIndex) ? false : true;

                                }
                            },
                            dataType: "json"

                        });
                        //  fillRequestWorkPopup(workOrderId);

                        popup(e);
                    }
                    // prevent row selection if one click on the button
                    // return (iCol >= firstButtonColumnIndex) ? false : true;
                    return true;
                }


            });

Это функция делегата в tr в JQGrid?Я, уважаемые профессора, могу помочь.спасибо всем

1 Ответ

1 голос
/ 19 февраля 2012

URL "PublicHandler.ashx?Request=1&workOrderId: rowid" кажется мне неправильным.Вы имеете в виду, вероятно, "PublicHandler.ashx?Request=1&workOrderId=" + rowid?Лучше будет использовать url: "PublicHandler.ashx" с postData: {Request: 1, workOrderId: rowid}.

Следующая проблема - использование $("#tblRequestWorks tr").remove();.Вы не включили HTML-код, который вы используете на странице.Если вы хотите уничтожить старую сетку и создать новую в том же месте, вы должны использовать GridUnload вместо $("#tblRequestWorks tr").remove();: $("#tblRequestWorks").jqGrid('GridUnload'); (см. здесь и пример).

Вы также можете удалить dataType: "json" из кода.jqGrid не знает эту опцию, и вы уже используете правильную опцию datatype: "json".

Я думаю, вы можете изменить свой код так, чтобы использование GridUnload было не нужно.Мне достаточно только изменить некоторые параметры второй сетки ($("#tblRequestWorks")) и перезагрузить ее с учетом $("#tblRequestWorks").trigger('reloadGrid', [{page: 1}]);.

Еще одно замечание: вы должны быть очень осторожны в значениях id длявторая сетка.Не допускается наличие дубликатов идентификаторов на странице.Если вы не можете сгенерировать уникальные идентификаторы на сервере, вы можете использовать опцию idPrefix в сетке.

...