jqGrid: один переключатель на строку - PullRequest
1 голос
/ 07 января 2011

Я пытаюсь настроить столбец в jqGrid, в котором есть одна радиокнопка для каждой строки, чтобы позволить пользователю установить одну строку в качестве «основного» дочернего элемента родителя. Однако следующий код просто отображает пустые ячейки.

Я предполагаю, что ячейки не переводятся в «режим редактирования» или что-то подобное, что меня смущает, потому что в той же сетке есть редактируемый столбец флажка, который просто работает как нужно.

(Внизу сетки есть кнопка navButton, которая сохраняет состояние сетки, если это актуально.)

var createRadioButton = function(value) {
    return $("<input type='radio' />", {
        name: mySubGridID,
        checked: value
    }).get();
}

var extractFromRadioButton = function(elem) {
    return $(elem).val();
}

$("#grid").jqGrid({
    url: '/GetData',
    datatype: 'json',
    colModel: [
    ...
    { label: 'Selected', name: 'selected', index: 'selected', editable: true, edittype: 'custom', editoptions: 
        { 
            custom_element: createRadioButton, 
            custom_value: extractFromRadioButton  
        } 
    },
    ...
    ],
    ...
});

Спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Вы пытаетесь использовать edittype: 'custom'.Эта работа только в режиме редактирования (встроенное редактирование или редактирование формы).Если я правильно понимаю ваш вопрос, вы пытаетесь добавить переключатель, который отображается в всех строках в соответствующем столбце.Так что вам лучше использовать пользовательский форматер (см. здесь пример).Вы можете связать событие click в loadComplete (см. здесь пример).

Я не уверен, что понимаю, почему вам нужно использовать переключатель.Если вы хотите использовать радиокнопки только для выбора строки, вероятно, вам следует рассмотреть возможность использования multiselect:true.Небольшое поведение выделения, которое вы можете изменить внутри обработчика событий onSelectRow или beforeSelectRow , если необходимо.

0 голосов
/ 21 сентября 2016

Мне нужно было более простое решение, поэтому я пришел к этому методу, который использует встроенный множественный выбор вместо добавления столбца в сетку.

...

var gridSelector = $("#myGrid");
//jqGrid code snippet, methods below:
multiselect : true, //Must be true to allow for radio button selection
beforeSelectRow: function(rowid, e)
{
    // Allow only one selection
    $(gridSelector).jqGrid('resetSelection');
    return (true);
},
beforeRequest : function() {
    //Remove multi-select check box from grid header
    $('input[id=cb_myGrid]', 'div[id=jqgh_myGrid_cb]').remove();
},
loadComplete : function () {
    //Convert grid check boxes to radio buttons
    $('input[id^="jqg_myGrid_"]').attr("type", "radio");
},

...

Приветствия

0 голосов
/ 07 декабря 2012

У меня была такая же проблема с форматером, и мне пришлось установить ширину переключателя, так как он по какой-то причине становился шире ячейки.

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