Kendo UI & Javascript - данные не извлекаются при добавлении новой записи - PullRequest
0 голосов
/ 07 января 2019

Приветствую всех,

Нужна помощь и не уверен, какие части я делаю неправильно.

При нажатии Добавить новую запись Я хочу сегментАктивное поле в отключить и по умолчанию переключатель будет установлен на ДА . Мне удается это сделать. Но когда я сохраняю запись, она не извлекает значение ' y ' в мою базу данных. Он вставит ноль.

$("#grid").kendoGrid({
dataSource: dataSource,
height:400,
sortable: true,  
columns: [ 
    { field: "segmentActive", title:"STATUS", width: "120px" , editor: RadioSegmentActive,
      template: data => data.segmentActive == "y" ? "Yes" : "No" },

    { field: "marketSegmentName", title:"SEGMENT NAME", width: "120px" },

    //Button Name
    { command: [{ name: "edit", text: { edit: "Edit",
                                        update: "Submit", 
                                        cancel: "Cancel"} },
                { name: "destroy", text: "De-active" }], 
                  title: " ", width: "120px" },

],
editable: "inline",
edit: function(e) {
        if (e.model.isNew()) { // Went adding new record    
                $('input[name=segmentActive]').attr("disabled",true);  //disable column STATUS
                radio3.checked = true; // id="radio3" checked
        }
    },   
toolbar: [{ name: "create", text: "Add" }],
pageable: {
            refresh: true,
            pageSizes: true,
            buttonCount: 5
        },          
});  //end of kendo grid

Моя функция RadioSegmentActive

function RadioSegmentActive(container, options) {
var guid = kendo.guid();

    $('<input class="k-radio" id="radio3" name="segmentActive" type="radio" value="y" >').appendTo(container);
    $('<label class="k-radio-label" for="radio3">Yes</label>').appendTo(container);  //YES
    $('<br>').appendTo(container); 
    $('<input class="k-radio" id="radio4" name="segmentActive" type="radio" value="n" >').appendTo(container);
    $('<label class="k-radio-label" for="radio4">No</label>').appendTo(container);  //NO
}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это кендо - вам нужно обновить базовую модель, к которой он привязан:

edit: function(e) {
    if (e.model.isNew()) { // Went adding new record    
            $('input[name=segmentActive]').attr("disabled",true);  //disable column STATUS
            radio3.checked = true; // id="radio3" checked
            // change the kendo model value
            e.model.set("segmentActive", "y");
    }
}, 
0 голосов
/ 08 января 2019

Чтобы проверить значение console.log($('input[id=your_radio_button_id]:checked').val());, проверьте в окне проверки, имеет ли оно значение. Я полагаю, что нет, потому что в записи базы данных он пуст. Ваша функция редактирования может включать значение обновления в скрытый ввод.

edit: function(e) {
    if (e.model.isNew()) { // Went adding new record    
            $('input[name=segmentActive]').attr("disabled",true);  //disable column STATUS
            radio3.checked = true; // id="radio3" checked
            $("#hidden_input").val("y");
    }
}, 

Поместите скрытый вход рядом с радио

<input type="hidden" id="hidden_input" name="hidden_input">

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

...