Пользовательский интерфейс Shield: вставка строки на основе другой строки

Я использую Shield UI для моего Java-приложения. Я создал пользовательское окно вставки с "командой" следующим образом:

toolbar: [
            {
                buttons: [
                    //{ commandName: "insert", caption: "Agregar Solicitud" }
                    { cls: "insertButton", caption: "Agregar Solicitud", click: insertRecord }
                ],
                position: "top"
            },

Код для вставки записи:

       function insertRecord(index) {
        //alert(JSON.stringify(index));
        index = 0;
        var grid = $("#grid").swidget(), 
            item = grid.dataItem(index);

        initializeWindowWidgets();
        editedRowIndex = index;

        $("#solId").swidget().value(item.solId);
        $("#atmid").swidget().value(item.atmid);
        $("#fechaAbastecimiento").swidget().value(item.fechaAbastecimiento);
        $("#cargar").swidget().checked(item.cargar);
        $("#emergencia").swidget().checked(item.emergencia);
        $("#solId").swidget().enabled(true);
        $("#atmid").swidget().enabled(true);
        $("#fechaAbastecimiento").swidget().enabled(true);
        $("#cargar").swidget().enabled(true);
        $("#emergencia").swidget().enabled(true);
        $("#save").swidget().enabled(true);
        $("#window").swidget().visible(true);
        //$("#window").swidget().center();
    }

function initializeWindowWidgets() {
        $("#window").shieldWindow({
                position: { left: 500, top: 200 },  
                width: 320,
                height: 360,
                title: "Insertar abastecimiento",
                modal: true,
                visible: false
            });
        $("#solId").shieldNumericTextBox({
        });
        $("#atmid").shieldTextBox({
        });
        $("#fechaAbastecimiento").shieldDatePicker({
        });
        $("#cargar").shieldCheckBox({
        });
        $("#emergencia").shieldCheckBox({
        });
        $("#save").shieldButton({
            events: {
                click: function (e) {
                    var grid = $("#grid").swidget(),
                        editedItem = grid.dataSource.edit(3).data;
                    editedItem.solId = $("#solId").swidget().value();
                    editedItem.atmid = $("#atmid").swidget().value();
                    grid.saveChanges();
                    $("#window").swidget().close();
                }
            }
        });

Также я могу получить данные строки, когда я выбираю строку, используя:

selectionChanged: function (e) {

                            var selected = e.target.contentTable.find(".sui-selected");

                            if (selected.length > 0) {
                                    message.innerHTML = selected.get(0).innerHTML;
                            }
                            else {
                                     message.innerHTML = "";
                            }
                    }

Наконец, я знаю, как позвонить в службу, например:

       $("#grid").shieldGrid({
        dataSource: {
            events: {
                error: function (event) {
                    if (event.errorType == "transport") {
                        // transport error is an ajax error; event holds the xhr object
                        alert(JSON.stringify(event)); 
                        alert("transport error: " + event.error.statusText);
                        // reload the data source if the operation that failed was save
                        if (event.operation == "save") {
                            this.read();
                        }
                    }
                    else {
                        // other data source error - validation, etc
                        alert(event.errorType + " error: " + event.error);
                    }
                },
            },
            remote: {
                read: {
                    type: "POST",
                    url: "abastecimientos/get",
                    contentType: "application/json",
                    dataType: "json"
                },
                modify: {
                    create: function (items, success, error) {
                        var newItem = items[0];
                        $.ajax({
                            type: "POST",

Мне нужно сделать эти задачи:

  1. Выберите строку в моей сетке.
  2. Нажмите кнопку вставки.
  3. Показано мое пользовательское окно с данными строки.
  4. Изменить данные показали.
  5. Нажмите кнопку сохранения и вызовите удаленную службу, чтобы вставить новую строку.

Я знаю, как выполнять эти задачи отдельно, но задачи 3 и 5 мне не понятны. Я гуглю весь интернет, но не могу понять, как это сделать.

Пожалуйста, я был бы признателен за любое предложение.

Juan