jqgrid Сохранить ячейку Редактировать при закрытии DatePicker - PullRequest
2 голосов
/ 24 июня 2011

У меня есть следующий JQGrid

    $("#requestTable").jqGrid({
    url: url,
    datatype: 'json',
    mtype: 'GET',
    altRows: 'true',
    colNames: ['id', 'Request Date', 'Name', 'HomePhone', 'Address', 'Contact Date', 'Email'],

    colModel: [
                { name: 'Id', index: 'Id', hidden: true },
                { name: 'RequestDate', index: 'RequestDate', width: 100 },
                { name: 'FullName', index: 'FullName', width: 125, sortable: false },
                { name: 'HomePhone', index: 'CabinetColor', width: 90, sortable: false },
                { name: 'FullAddressString', index: 'ShellColor', width: 260, sortable: false },
                { name: 'DealerContactDate', index: 'DealerContactDate', width: 105, editable: true,
                     editoptions:{
                          dataInit:function(element){
                              $(element).datepicker();
                          }
                     }

                 },
                { name: 'Email', index: 'Email', width: 110, sortable: false }

            ],
    cellEdit:true,
    cellurl:cellurl,
    pager: '#pager',
    rowNum: 50,
    rowList: [ 25, 50, 75, 100],
    sortname: 'id',
    sortorder: "desc",
    viewrecords: true,
    height: "100%"

});

});

Как видите, ячейка DealerContactDate редактируется с помощью средства выбора даты. В любом случае, нужно ли jqgrid сохранять данные, как только в датчике выбрана дата и она закрывается? Прямо сейчас использование должно выбрать дату из DatePicker. затем снова выберите это текстовое поле и нажмите Enter, что слишком сложно. Спасибо!

Обновление: Я создал две переменные для строки и ячейки вне jqrid, а затем в сетках после событияEditCell установил эти переменные. затем событие datePickers onSelect передало их в функцию saveCell, и это, похоже, работает.

 var saverow = 0;

var savecol = 0;
$("#requestTable").jqGrid({
    url: url,
    datatype: 'json',
    mtype: 'GET',
    altRows: 'true',
    colNames: ['id', 'Request Date', 'Name', 'HomePhone', 'Address', 'Contact Date', 'Email'],

    colModel: [
                { name: 'Id', index: 'Id', hidden: true },
                { name: 'RequestDate', index: 'RequestDate', width: 100 },
                { name: 'FullName', index: 'FullName', width: 125, sortable: false },
                { name: 'HomePhone', index: 'CabinetColor', width: 90, sortable: false },
                { name: 'FullAddressString', index: 'ShellColor', width: 260, sortable: false },
                { name: 'DealerContactDate', index: 'DealerContactDate', width: 105, editable: true,
                    editoptions: {
                        dataInit: function (element) {
                            $(element).datepicker({
                                onSelect: function () {
                                    $("#requestTable").jqGrid("saveCell", saverow, savecol);
                                }
                            });
                        }
                    }

                },
                { name: 'Email', index: 'Email', width: 110, sortable: false }

            ],
    cellEdit: true,
    pager: '#pager',
    rowNum: 50,
    rowList: [25, 50, 75, 100],
    sortname: 'id',
    sortorder: "desc",
    viewrecords: true,
    height: "100%",
    cellurl: cellurl,
    afterEditCell: function (id, name, val, IRow, ICol) {
        saverow = IRow;
        savecol = ICol;
    }

});

Ответы [ 2 ]

3 голосов
/ 24 июня 2011

Вы должны иметь возможность использовать событие onSelect() из datePicker в сочетании с saveRow() из jqGrid.Что-то вроде:

   $(element).datepicker({
      onSelect: function(dateText, inst) { 
          var $input = inst.input; // the datepicker input
          var $row = $input.parents("tr"); 
          $("#requestTable").jqGrid('saveRow',$row.attr("id"), false); // this would probably need some work, I have no experience with jqGrid
   });
1 голос
/ 06 января 2012

Привет, у меня была другая проблема.то есть фокусировка ячейки после выбора даты из указателя даты.Я исправил это в приведенном выше ответе 1, хотя этот ответ не был предназначен для моей проблемы.В основном, чтобы держать ячейку сфокусированной после выбора даты в jQGrid, - вызовите событие saveCell для метода datePickers onSelect (), как показано в Answer1.- присваивать переменные saveRow и saveCol в методе beforeEditCell.

Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...