2013-12-08 50 views
1

hiii所有,我使用jqgrid,並希望顯示錯誤消息,如果用戶想要刪除正在使用的卡車記錄,我必須顯示錯誤消息卡車在使用中.. 這裏是我的jqgrid: -如何在jqgrid上顯示刪除錯誤信息?

jQuery(document).ready(function() { 


     var grid = jQuery("#TrucksGrid141"); 

     grid.jqGrid({ 
      url: '/Admin/GetTrucksForJQGrid', 
      datatype: 'json', 
       mtype: 'Post', 
       cellsubmit: 'remote', 
       cellurl: '/Admin/SaveTruck', 
       height: '100%', 
       pager: '#pagerTrucks', 

      colNames: ['Id', 'Name', ''], 
      colModel: [ 
      { name: 'Id', index: 'Id', key: true, hidden: true, editrules: { edithidden: true } }, 
      { name: 'Name', index: 'Name', align: "center", sorttype: 'text', resizable: true, editable: true, editrules: { required: true } }, 


      { name: 'Delete', index: 'Delete', width: 25, resizable: false, align: 'center', classes: 'not-editable-cell' } 

      ],  



      width: '490',   
      caption: 'Company Trucks', 
      hidegrid: false, 
      delete: true, 
      cellEdit: true, 
      viewrecords: true, 
      gridComplete: function() { 

       var ids = grid.jqGrid('getDataIDs'); 
       for (var i = 0; i < ids.length; i++) { 
        var isDeleted = grid.jqGrid('getCell', ids[i], 'Delete'); 
        if (isDeleted != 'true') { 
         grid.jqGrid('setCell', ids[i], 'Delete', '<a href="#" onclick="deleteRow(' + ids[i] + ');"><img src="/Images/delete.png" alt="Delete Row" /></a>'); 
        } 
        else { 
         grid.jqGrid('setCell', ids[i], 'Delete', ' '); 
         //grid.jqGrid('setCell', ids[i], 'Privileges', 'admin'); 
        } 
       } 
      } 
     } 

     ); 

     grid.jqGrid('navGrid', '#pagerTrucks', 
     { resize: false, add: false,search:false, del: false, refresh: false, edit: false, alerttext: 'Please select one user' } 

    ).jqGrid('navButtonAdd', '#pagerTrucks', 
     { title: "Add New Truck", buttonicon: "ui-icon ui-icon-plus", onClickButton: showNewTruckModal, position: "First", caption: "" }); 

    }); 

    function showNewTruckModal() { 

     var grid = jQuery("#TrucksGrid141"); 
     $("#formAddNewTruck").dialog(
       { 
        open: function (event, ui) { 

         $("#txtName").val(''); 
         $("#trFormErrorTrucks").hide(); 
         $("#trFormErrorTrucks td").text(''); 

        }, 
        buttons: { 
         "Submit": function() { 
          debugger; 
          if (ValidateUsers() == true) { 
           $('#error').ajaxError(function (event, request, settings) { 
            $('#waiting').hide(); 
            $(this).addClass('errordiv').text(request.statusText + "" + request.status); 

           }); 
           $.post('/Admin/AddNewTruck/', 
           $('#formAddNewTruck').serialize(), 
           function (data) { 
            debugger; 
            if (data == 'Success') { 
             $('#formAddNewTruck').dialog("close"); 
             grid.jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 
            } 
            else { 
             $("#trFormErrorTrucks").show(); 
             $("#trFormErrorTrucks td").text(data); 
            } 

           }); 
          } 
         }, 
         "Cancel": function() { 
          $('#error').removeClass("errordiv").text(""); 
          $('#waiting').hide(); 
          $(this).dialog("close"); 
         } 
        }, 
        modal: true, 
        title: "New Truck", 
        minWidth: 400, 
        resizable: false 
       } 
     ).dialog('open'); 
    } 

    function ValidateUsers() { 
      var flag = true; 
      var errorMSG = ''; 
      $("#trFormErrorTrucks td").text(''); 
      if ($("#txtName").val() == '') { 
       errorMSG += 'Truck Name cannot be blank'; 
       flag = false; 
      } 


      if (flag == false) { 
       $("#trFormErrorTrucks").show(); 
       $("#trFormErrorTrucks td").text(errorMSG); 
      } 
      else { 
       $("#trFormErrorTrucks td").text(''); 
       $("#trFormErrorTrucks").hide(); 
      } 
      return flag; 
     } 

    function deleteRow(rowid) { 
     jQuery("#TrucksGrid141").delGridRow(rowid, { url: '/Admin/TruckDelete', caption: 'Delete User?', msg: 'Delete selected User? <br />Careful, this is irreversable!', resize: false,success:abc }); 
     } 

     function emptyText(rowid, cellname, value, iRow, iCol) { 
      if (cellname == 'Password') 
       return ""; 
     } 
     function abc(data) 
     { 
      debugger; 
     } 


    and here is my cs code from controller: 

    [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult TruckDelete(int Id) 
     { 
      var error = ""; 
      bool result=true; 
      DataContext db = new DataContext(); 
      Truck udelete= db.Trucks.Where(el => el.Id == Id).FirstOrDefault(); 
      if (udelete != null) 
      { 
       JobSites_ForSnow snow = db.JobSites_ForSnow.Where(el => el.TruckId == Id).FirstOrDefault(); 
       JobSite normal = db.JobSites.Where(el => el.TruckId == Id).FirstOrDefault(); 
       if(snow==null && normal==null) 
       { 
       db.Trucks.Remove(udelete);   
       db.SaveChanges(); 
       } 
       else 
       { 
       error = "Truck in use!"; 
       result= false; 
       } 
      } 
      else 
      { 
       error = "Record Not Found!"; 
       result= false; 
      } 
      return Json(result,error); 
     } 

有人可以告訴我怎麼顯示錯誤信息?我已經看到這個答案(jqgrid error message on delete),但不明白該怎麼辦:(如果問題不清楚給你,請通過評論讓我知道,我會解釋...提前致謝:)

回答

3

您目前

return Json(result,error); 

使用作爲TruckDelete行動的最後一行,在那裏result有布爾型和error是一個字符串。所以Controller.Json Method (Object, String)其中error將被解釋爲HTTP響應的contentType。這是你的第一個問題。您應該使用類似

return Json(new Object[] {result, error}); 

(請參閱here)。在這種情況下該方法將產生像

[true,""] 

[false,"Record Not Found!"] 

客戶端側(的jqGrid)JSON響應可以處理afterSubmit回調的內部的響應。您只需要將未知(用於jqGrid)選項successdelGridRow更改爲以下內容

jQuery("#TrucksGrid141").delGridRow(rowid, { 
    url: '/Admin/TruckDelete', 
    caption: 'Delete User?', 
    msg: 'Delete selected User? <br />Careful, this is irreversable!', 
    resize: false, 
    afterSubmit: function (jqXHR) { 
     return $.parseJSON(jqXHR.responseText); // return decoded response 
    } 
}); 
+0

真的很有幫助奧列格先生。謝謝 :) –