Datatables - встроенный редактор обновляет только таблицу хостов - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть простая таблица с использованием левого соединения:

Editor::inst( $db, 'enqitem', 'enqitemid')
->fields(
    Field::inst( 'salstkitem.salsubid' ),
    Field::inst( 'salstkitem.condition1' ),
    Field::inst( 'enqitem.cost' )         
)
->leftJoin('salstkitem', 'salstkitem.salsubid', '=', 'enqitem.itemid')
->where('enqitem.enqnr',141316)
->debug( true )
->process( $_POST )
->json();

В редакторе я скрыл первичный ключ таблицы, не являющейся хостом:

editor = new $.fn.dataTable.Editor( {
    ajax: "datatables.php",
    table: "#example",
    fields: [{
            name: "salstkitem.salsubid",
            type: "hidden"
         },{
            label: "Condition:",
            name: "salstkitem.condition1"
        },{
            label: "Cost:",
            name: "enqitem.cost"
        }
    ]
});

Я установил его для редактирования внутри строки:

$('#example').on( 'click', 'tbody td:not(:first-child)', function (e) {
    editor.inline( this, {
        onBlur: 'submit'
    } );
});

Когда я редактирую inline, стоимость успешно обновляется, так как она является членом таблицы хостов. Однако условие 1 не будет обновлено. Если я выберу кнопку РЕДАКТИРОВАТЬ, оба поля обновятся успешно.

Эта проблема предназначена только для встроенного редактирования.

Кто-нибудь знает, почему? Отладка предполагает, что он вообще не пытается обновиться. Это чисто запрос SELECT.

1 Ответ

0 голосов
/ 07 ноября 2018

Аллан, создатель таблиц, вернулся ко мне:

Если вы пишете в объединенную таблицу, а не просто в основную таблицу, вам нужно, чтобы Editor также отправил первичный ключ объединенной таблицы (я полагаю, в данном случае enqitem.enqitemid). Когда вы выполняете встроенное редактирование, по умолчанию оно отправляет только отредактированное поле, но вы можете использовать объект параметров формы, чтобы изменить это:

editor.inline( this, {
    onBlur: 'submit',
    submit: 'allIfChanged'
} );

С уважением, Allan

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