У меня есть бритва, которая содержит как элементы управления полями, так и сетку для полей на одной странице. Если я нажму кнопку редактирования в сетке, я хочу получить данные строки и установить поля для редактирования.

Я получил данные строки сетки, используя rowId, например

 var rowData = $('#CorpGroupSearchGrid').getRowData(rowId);

Теперь я хочу загрузить rowData в модель или заполнить ее элементами управления полем. Мне понравилось следующее, но это не работает. Я не знаю, как это делается, пожалуйста, помогите.

$("#CorpGroupAll").html(rowData);

CorpGroupAll - это идентификатор родительского тега div элементов управления полем.

0
Md Aslam 7 Янв 2016 в 07:23

4 ответа

Лучший ответ

rowData - это массив javscript с данными о требуемой строке, поэтому очевидно, что $("#CorpGroupAll").html(rowData) не может работать. если вы хотите передать значения rowData в настраиваемые редакторы, которые есть на вашей странице, вам нужно сделать это вручную, свойство за свойством. Например, предположив, что в вашей строке есть столбец Name, и у вас есть поле ввода, которое используется для редактирования этого значения Name с идентификатором editor_Name, вам нужно сделать что-то вроде:

$('#editor_Name').val(rowData.Name);

Если вам удастся создать идентификаторы ввода с некоторым шаблоном, например editor_{Name of property}, вы можете попробовать автоматизировать эту задачу с помощью некоторого JavaScript:

var props = Object.keys(rowData);
for (var propName in props)
{
   var id = '#editor_' + propName;
   var $input = $(id);
   if($input.length === 1)
   {
      $input.val(rowData[propName]);
   }   
}
1
Alex Art. 7 Янв 2016 в 07:12

Предполагая, что ваш приоритет - присвоить значения вашим элементам управления.

Возможно, вам придется установить идентификатор соответствующих элементов управления, соответствующий индексу (имени) столбца jqgrid. Если тогда можно поставить что-то вроде ниже:

$.each(rowData, function (i) {
            $("#" + rowData[i].name).text(rowData[i].value);
        });
1
Rustin Cohle 8 Янв 2016 в 12:24

Я предполагаю, что вам нужно частичное представление, чтобы удерживать элементы модели из строки, а затем заполнить частичное представление с помощью rowData.

-1
measurelink 7 Янв 2016 в 04:52

Вы можете установить данные json для своих входов в событии afterShowForm формы редактирования jqgrid. Скрыть форму редактирования сразу после открытия. Затем установите значение ваших входов значениями выбранной строки, как показано ниже. Надеюсь, что это поможет вам.

afterShowForm: function(formid){
    $('#editmodCorpGroupSearchGrid').find('.ui-icon.ui-icon-closethick').click();
    var rowId = $('#CorpGroupSearchGrid').jqGrid ('getGridParam', 'selrow');
    var rowData = $('#CorpGroupSearchGrid').getRowData(rowId);

    // assume `id` and `name` are the ids of your inputs
    $('#id').val(rowData.id);
    $('#name').val(rowData.name);
}

ДЕМО

1
Ibrahim Khan 7 Янв 2016 в 11:40