Возвращаемые значения в редактируемой таблице Datatables - самые последние изменения для всех отредактированных элементов.

0

Я использую Datatables jeditable, и я могу обновлять данные POST в базе данных, но после первого редактирования эхо-сообщение возвращается к таблице, показывает самое последнее изменение. Например, я делаю редактирование, и он отображает новое значение + "обновленный сервер" в поле. Я делаю редактирование для другого поля в том же столбце (в другой строке), а таблица отображает новое значение + "обновленный сервер", но тогда начальная строка также показывает, что последнее значение. База данных правильная, поэтому это проблема с тем, как значение обрабатывается при возврате.

здесь код. любые идеи о том, почему последнее обновление отображается для всех обновленных полей?

                    var oTable = [];
                $('.myTable').each(function() {
                  //  var tid = $(this).attr('id');
                    //alert(tid);
                    var obj = {};
                    obj=$('#'+$(this).attr('id')).dataTable({
                        bFilter: false,                        
                        sPaginationType: 'full_numbers',
                        bSort: true
                        aoColumns: [
                            {bSortable: false},
                            {bSortable: false},
                            null,
                            null,
                            null,
                            null,
                            null,
                            null,
                            null,
                            {
                                data: " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
                                type: 'select',
                                submit: 'ok'
                            },
                            null
                        ]
                    });
                    oTable.push(obj);
                }); 

                $('[id^="rnote"]').on('click',
                        function() {
                            var tid = $(this).attr('id');
                            var tabnum = tid.slice(5,6);
                            var ind = tabnum-1;
                            var aPos = oTable[ind].fnGetPosition(this);
                            var selrow = oTable[ind].fnGetData(aPos[0]);
                            var stnum = selrow[0];  //store
                            var supnum = selrow[2]; //supplier number
                            var invnum = selrow[4]; //invoice number
                            var row = aPos[0];
                            $('.editable',oTable[ind].fnGetNodes()).editable('edit_errorcode.php', {
                                callback: function(sValue, y) {
                                    oTable[ind].fnUpdate(sValue, aPos[0], aPos[1]);
                                },
                                submitdata: function(value, settings) {
                                    return {
                                        column: oTable[ind].fnGetPosition(this)[2],
                                        stnum: stnum,
                                        supnum: supnum,
                                        invnum: invnum
                                    };
                                },
                                submit: 'Save',
                                placeholder: ''
                            });
                        });
Теги:
datatables

1 ответ

0
Лучший ответ

Я решил это. Проблема заключалась в значениях aPos (position) при обратном вызове. Они не обновлялись с обновленной строкой. Я возвращаю переменную aPos в обратном вызове, чтобы убедиться, что она использует правильную позицию, и это устраняет проблему:

                                $('.editable',oTable[ind].fnGetNodes()).editable('edit_errorcode.php', {
                                callback: function(sValue, y) {
                                    aPos = oTable[ind].fnGetPosition(this);  //added this line
                                    oTable[ind].fnUpdate(sValue, aPos[0], aPos[1]);
                                },

Ещё вопросы

Сообщество Overcoder
Наверх
Меню