2011-12-17 69 views
2

我正面臨使用jqgrid在「自定義編輯模式」中的問題。 我用按鈕正確構建了網格,爲每一行編輯/保存/取消/刪除。 對於每個按鈕,我將一個函數綁定到每個操作(保存,保存等) 我現在的問題是,當試圖檢查字段是否有效時,將執行驗證功能並觸發錯誤對話框,但值提交給數據庫,並且該行不會保存在「編輯模式」中,以便用戶更正錯誤。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"]; 

} 

回答

6

您可以驗證在beforeSubmit function表單字段。在此功能中,您可以驗證字段並將高亮級別添加到所需的元素。你可以這樣做:

beforeSubmit: function(postdata, formid){ 
     //more validations 
     if ($('#exec').val()==""){ 
       $('#exec').addClass("ui-state-highlight"); 
       return [false,'ERROR MESSAGE']; //error 
     } 
     return [true,'']; // no error 
},