Question

J'ai mis un jqGrid la page. Dans jqGrid placé une colonne que je veux, quand l'utilisateur clique sur la colonne, remplissage Autre Jqgrid.Now lorsque je clique sur la colonne désirée. Seulement pour la première fois Fill deuxième jqGrid, mais la prochaine fois que le code côté serveur ne fonctionne pas. Le code est écrit comme suit

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;
                }


            });

Il est délégué à la fonction B dans jqGrid? Je respectais les professeurs peuvent aider. Merci à tous

Était-ce utile?

La solution

L'URL "PublicHandler.ashx?Request=1&workOrderId: rowid" me semble mal. Voulez-vous dire "PublicHandler.ashx?Request=1&workOrderId=" + rowid probablement? Le mieux sera d'utiliser url: "PublicHandler.ashx" avec postData: {Request: 1, workOrderId: rowid}.

Le problème suivant est l'utilisation de $("#tblRequestWorks tr").remove();. Vous ne pas inclus de code HTML que vous utilisez sur la page. Si vous voulez détruire la vieille grille et créer un nouveau au même endroit, vous devez utiliser GridUnload au lieu de $("#tblRequestWorks tr").remove();. $("#tblRequestWorks").jqGrid('GridUnload'); (voir et par exemple)

Vous pouvez également supprimer dataType: "json" du code. jqGrid ne sais pas l'option et que vous utilisez déjà l'option datatype: "json" correcte.

Je pense que vous pouvez changer votre code afin que l'utilisation de GridUnload ne sera pas nécessaire. en changeant seulement sur certains paramètres de la seconde grille ($("#tblRequestWorks")) et rechargeant par rapport de $("#tblRequestWorks").trigger('reloadGrid', [{page: 1}]); me semble assez.

Une remarque: vous devriez être très prudent dans les valeurs de id pour la deuxième grille. Il est interdit d'avoir des doubles id sur la page. Si vous ne pouvez pas générer des identifiants uniques sur le serveur, vous pouvez envisager d'utiliser l'option de idPrefix du réseau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top