Метод editGridRow работает нормально, за исключением случаев, когда RowId равен 0. jqGrid - PullRequest
0 голосов
/ 18 декабря 2011

Я довольно новичок в jqGrid, который кажется отличным. есть много документации, и это здорово. У меня проблемы с редактированием. У меня есть сетка с несколькими строками, и я не могу редактировать все строки, кроме первой, есть проблема с методом editGridRow, когда идентификатор строки равен 0. Когда идентификатор строки другой, он работает хорошо. Другие методы, такие как getCell, работают нормально, даже когда идентификатор строки = 0.

Как я могу решить это?

спасибо за помощь.

$("#grid").jqGrid({
                altRows: true,
                datatype: 'local',
                direction: 'rtl',
                height: '100%',
                mtype: 'POST',
                hidegrid: false,
                colNames: ['מספר הקלסר', 'שם השולח', 'מעגל', 'נושא ראשי', 'הגוף המשלם', 'מספר ארגז', 'תאריך שליחה', 'תאריך התחלה', 'תאריך סיום', 'תאריך גריסה', ''],
                colModel: [
                          { name: 'idFolders', index: 'idFolders', align: 'center', sorttype: 'int' },
                          { name: 'SenderName', index: 'SenderName', align: 'center', editable: true },
                          { name: 'Maagal', index: 'Maagal', align: 'center', editable: true },
                          { name: 'MainSubject', index: 'MainSubject', align: 'center', editable: true },
                          { name: 'PayerName', index: 'PayerName', align: 'center', editable: true },
                          { name: 'BoxNumber', index: 'BoxNumber', align: 'center', sorttype: 'int', editable: true },
                          { name: 'SentDate', index: 'SentDate', align: 'center', sorttype: 'date', datefmt: 'd,m,y', editable: true },
                          { name: 'FolderStartDate', index: 'FolderStartDate', align: 'center', sorttype: 'date', datefmt: 'd,m,y', editable: true },
                          { name: 'FolderEndDate', index: 'FolderEndDate', align: 'center', sorttype: 'date', datefmt: 'd,m,y', editable: true },
                          { name: 'TrashDate', index: 'TrashDate', align: 'center', sorttype: 'date', datefmt: 'd,m,y', editable: true },
                //A column for Buttons - edit, delete, with custom Formatter - "formattEdit"
                          {name: 'myac', align: 'right', sortable: false, resize: false, formatter: formattEdit }
                        ],
                pager: '#pager',
                rowNum: 10,
                rowList: [10, 20, 30, 40, 50, 100],
                sortname: 'idFolders',
                sortorder: 'asc',
                viewrecords: true,
                gridview: true,
                caption: 'תוצאות החיפוש', 
                editurl: 'SearchWebService.asmx/editFoldersTable',
                .......

основная Сетка

//formattEdit, creating 2 buttons - Del, Editform.
            function formattEdit(cellvalue, options, rowObject) {
                var del, edit, HoverString, htmlString = "";
                var rowid = options.rowId;
                //Creating the Commands in a Long String
                //Edit
                edit = "onclick=$('#grid').jqGrid('editGridRow'," + rowid + ",{editData:{idFolders:$('#grid').jqGrid('getCell'," + rowid + ",'idFolders')}});";
                HoverString = " onmouseover=jQuery(this).addClass('ui-state-hover'); onmouseout=jQuery(this).removeClass('ui-state-hover');"                
                edit = edit + HoverString;
                htmlString = htmlString + "<div title='" + $.jgrid.nav.edittitle + "' style='float:right;cursor:pointer;' class='ui-pg-div ui-inline-edit' " + edit + "><span class='ui-icon ui-icon-pencil'></span></div>";

                //Delete
                del = "onclick=alert('Deleteing');";
                del = del + HoverString;
                htmlString = htmlString + "<div title='" + $.jgrid.nav.deltitle + "' style='float:right;margin-right:5px;' class='ui-pg-div ui-inline-del' " + del + "><span class='ui-icon ui-icon-trash'></span></div>";

                //Adding it as Html                
                return "<div style='align:center;'>" + htmlString + "</div>";

            }

Мой пользовательский форматтер - здесь есть вызов метода editGridRow

//Search Button - Ajax Call
            $("#searchBtn").click(function () {
                if ($("#searchBox").val() == "") {
                    alert("נא הקלד חיפוש");
                }
                else {
                    var grid = $("#grid")
                    grid.jqGrid("clearGridData", true).trigger("reloadGrid");
                    $.ajax({
                        type: 'POST',
                        contentType: "application/json; charset=utf-8",
                        url: 'SearchWebService.asmx/getTablejQgrid',
                        data: CreateSearchString(),
                        dataType: "json",
                        success: function (data, textStatus) {
                            if (textStatus == "success") {
                                var recivedData = JSON.parse(data.d);
                                $.each(recivedData.rows, function (key, value) {
                                    grid.jqGrid('addRowData', key, value);
                                });
                                grid.trigger('reloadGrid');
                            }
                        },
                        error: function (data, textStatus) {
                            alert('An error has occured retrieving data!');
                        }
                    });
                }
            });

Аякс Зов Заполнить Решётку

Это также мой первый пост о переполнении стека. надеюсь, я все сделал правильно

1 Ответ

0 голосов
/ 20 декабря 2011

решаемые

Кажется, что метод editGridRow имеет проблему с 0 в качестве значения, я добавил 1 к ключу строк при создании сетки, в результате чего идентификатор строки начинался с 1 вместо 0. Теперь это работает.

...
//getting the data from the server

success: function (data, textStatus) {
                        if (textStatus == "success") {
                            var recivedData = JSON.parse(data.d);
                            $.each(recivedData.rows, function (key, value) {
                                grid.jqGrid('addRowData', 1+key, value);
                            });
                            grid.trigger('reloadGrid');
                        }
                    },
...