0

我在页面上放了一个 jqgrid。在 Jqgrid 中放置了一个我想要的列,当用户单击该列时,Fill Other Jqgrid.Now 当我单击所需的列时。只有第一次填充第二个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;
                }


            });

它是 JQGrid 中 tr 中的委托函数吗?我尊敬的教授可以提供帮助。谢谢大家

4

1 回答 1

1

网址"PublicHandler.ashx?Request=1&workOrderId: rowid"似乎我错了。你的意思是大概"PublicHandler.ashx?Request=1&workOrderId=" + rowidurl: "PublicHandler.ashx"使用with会更好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第二个网格的值。页面上不允许有 id 重复项。如果您无法在服务器上生成唯一 ID,您可以考虑使用idPrefix网格选项。

于 2012-02-19T14:03:09.887 回答