Пользовательский режим редактирования Jqgrid и проверка - PullRequest
2 голосов
/ 17 декабря 2011

У меня проблема с использованием jqgrid в «режиме пользовательского редактирования».Я правильно построил сетку с кнопками для редактирования / сохранения / отмены / удаления для каждой строки.Для каждой кнопки я привязываю функцию к каждой операции (сохранение, сохранение и т. Д.). Теперь моя проблема заключается в том, что при попытке проверить, является ли поле действительным, выполняется функция проверки и запускается диалоговое окно с сообщением об ошибке, но значение передается.в базу данных, и строка не сохраняется в «режиме редактирования», чтобы пользователь исправил ошибку.

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

Спасибо за ваше внимание

Мой пример с соответствующим кодом

// function to retrieve data to jqgrid
getList();

// grid configuration

$("#list").jqGrid({
    datatype: "local",
    width: 465,
    colNames: ["ID", "Descrição", ""],
    colModel: [
          { name: "id", index: "id", sorttype: "int", hidden: true },
          { name: "descr", index: "descr", editable: true, edittype: "text", editrules: { custom: true, custom_func: checkvalid }
          },
          { name: "action", index: "action", sortable: false, width: 90, search: false} // Botões

        ],
    loadtext: 'A carregar...',
    rowNum: 20,
    rowList: [20, 40, 80, 100, 200],
    ignoreCase: true,
    pager: "#pager",
    sortname: "id",
    viewrecords: true,
    sortorder: "asc",
    caption: "Gestão de tipos",

    gridComplete: function() {
        //load edit buttons
        var ids = $("#list").jqGrid("getDataIDs");
        for (var k = 0; k < ids.length; k++) {
            var id = ids[k];
            var html = "";
            html += "<input id=\"btnEdit" + id + "\" type=\"button\" class=\"JQbutton\" value=\"Editar\" onclick=\"jqGrid_editRow('" + id + "');\"  />";
            html += "<input id=\"btnDelete" + id + "\" type=\"button\" class=\"JQbutton\" value=\"Apagar\" onclick=\"jqGrid_deleteRow('" + id + "');\"  />";
            html += "<input id=\"btnSave" + id + "\" style=\"display: none;\" class=\"JQbutton\" type=\"submit\" value=\"Guardar\" onclick=\"jqGrid_doSave(" + id + ");\"  />";
            html += "<input id=\"btnCancel" + id + "\" style=\"display: none;\" class=\"JQbutton\" type=\"button\" value=\"Cancelar\" onclick=\"jqGrid_restoreRow('" + id + "');\" />";
            $("#list").jqGrid("setRowData", id, { action: html });
        }
    }

});


function checkvalid(value, colname) {
    //-... code to validate field 

    return [false, "testing validation"];

}

1 Ответ

6 голосов
/ 12 января 2012

Вы можете проверить поля формы в функции beforeSubmit . В этой функции вы можете проверить поля и добавить класс подсветки к элементу, который вы хотите. Вы можете сделать что-то вроде этого:

beforeSubmit: function(postdata, formid){ 
       //more validations
       if ($('#exec').val()==""){
                $('#exec').addClass("ui-state-highlight");
                return [false,'ERROR MESSAGE']; //error
      }
      return [true,'']; // no error
 },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...