在Jqgrid EDIT表单上显示成功消息

时间:2012-06-20 17:37:00

标签: jquery asp.net-mvc-3 model-view-controller jqgrid

编辑PRMS

edit: { 

addCaption: "Add CDM",
bSubmit: "Submit",
bCancel: "Cancel",  
bClose: "Close",
saveData: "Data has been changed! Save changes?",
bYes: "Yes",
bNo: "No",
bExit: "Cancel",

//serializeEditData: serailize,  
//editData: {new_CDM_ID: function() { return $('#cdmID').val();} },  
closeOnEscape: true,  
recreateForm: true,  
width: '450',  
afterSubmit: function (response, postdata) {  
var result = jQuery.parseJSON(response.responseText);  
return [result.success, result.message, result.id];
//return [success, message, new_id]  

} 

问题

我能够在 afterSubmit 事件中捕获错误消息,并且还能够在jqgrid的编辑表单中显示它。但成功信息并没有发生同样的情况。我能够捕获它但无法在jqgrid的编辑形式上显示。我应该使用不同的事件来显示成功消息。

我的要求是:

  1. 以红色显示错误消息(正常工作)
  2. 以绿色显示成功消息(不工作)

3 个答案:

答案 0 :(得分:1)

方法“afterSubmit”的documentation说:“(如果成功,则忽略消息)。”

你应该使用黑客攻击。将此代码放在afterSubmit方法中。 :

if(response.status == 200){ 
      $(".topinfo").html("info message"); 
      var tinfoel = $(".tinfo").show();
      tinfoel.delay(3000).fadeOut();
      return [true,''];
} else {
      return [false,'error message'];
}

这适用于jqGrid 4.4.1的版本。

答案 1 :(得分:1)

从@Gab获取灵感,这是我的最终代码,效果很好。 closeAfterEdit如果设置为true,则上面的解决方案没有显示msg,所以我创建了新的对话框。

function(response) { if(response.status == 200)                                                                             
{ 
        jQuery.jgrid.info_dialog("Info","<div class=\"ui-state-highlight\" style=\"padding:5px;\">Record updated!</div>", 
                                    jQuery.jgrid.edit.bClose,{buttonalign:"right"});

        jQuery("#info_dialog").delay(3000).fadeOut();

        return [true,""];
    } 
}

答案 2 :(得分:1)

您可以使用以下代码:

 afterSubmit: function (response, postdata) {
            var myInfo = '<div class="ui-state-highlight ui-corner-all">'+
                         '<span class="ui-icon ui-icon-info" ' +
                             'style="float: left; margin-right: .3em;"></span>' +
                         "Done Successfully!!!"
                         '</div>',
                $infoTr = $("#TblGrid_" + $.jgrid.jqID(this.id) + ">tbody>tr.tinfo"),
                $infoTd = $infoTr.children("td.topinfo");
                $infoTd.html(myInfo);
                $infoTr.show();
               setTimeout(function () {
                    $infoTd.children("div")
                        .fadeOut("slow", function () {
                            // Animation complete.
                              $infoTr.hide();
                        });
                }, 3000);
           // failcount = 0;
          //  totalcount = 0;
            return [true, "", ""]; // response should be interpreted as successful
        },