【问题标题】:how to show error message on delete in jqgrid?如何在 jqgrid 中显示删除错误消息?
【发布时间】:2013-12-25 17:31:46
【问题描述】:

hiii 对所有人来说,我正在使用 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)但不明白该怎么做:(。如果你不清楚这个问题,请通过评论告诉我,我会解释......提前谢谢:)

【问题讨论】:

    标签: c# jquery jqgrid


    【解决方案1】:

    你目前使用

    return Json(result,error);
    

    作为TruckDelete 操作的最后一行,其中result 具有布尔类型,error 是一个字符串。所以Controller.Json Method (Object, String) where error 将被解释为 HTTP 响应的contentType。这是你的第一个问题。你应该使用类似的东西

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

    (请参阅here)。在这种情况下,该方法将生成 JSON 响应,如

    [true,""]
    

    [false,"Record Not Found!"]
    

    客户端(jqGrid)可以在afterSubmit回调中处理响应。您只需将 delGridRow 的未知(对于 jqGrid)选项 success 替换为以下

    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
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2011-05-26
      • 2017-01-02
      • 2013-02-05
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多