简体   繁体   English

在jqgrid中编辑行后无法显示成功消息

[英]unable to display success message after editing the row in jqgrid

I'm developing a web based application using bootstrap. 我正在使用引导程序开发基于Web的应用程序。 I'm trying to implement inline editing in my grid on page load but i'm facing some issue while displaying the success or failure message after performing edit function. 我正在尝试在页面加载时在网格中实现内联编辑,但是在执行编辑功能后显示成功或失败消息时遇到了一些问题。

Here is my code : 这是我的代码:

  $(document).ready(function () {
    var GetUrl = Web_Path + '/Test/TestHandler/GetTestData/' + AjaxHandlerName;

                jQuery("#jqGrid-container").jqGrid({
                    url: GetUrl,
                    datatype: 'json',
                    mtype: 'POST',
                    postData: { SearchInfo: function () { return getSearchPostData() } },
                    colNames: [' ', 'ID', 'Name', 'ContactNo', 'EmpId', 'MailId', 'RoleName'],
                    colModel: [
                    { name: 'myac', index: '', width: 80, fixed: true, sortable: false, resize: false,
                        formatter: 'actions',
                        formatoptions: {
                            keys: true,
                            delOptions: { recreateForm: true, beforeShowForm: beforeDeleteCallback }
                        }
                    },
                                { name: 'Id', index: 'Id', hidden: true, editable: true },
                                { name: 'Name', index: 'Name', validation: { required: true }, sortable: true, editable: true, editoptions: { size: "40", maxlength: "50"} },
                                { name: 'ContactNo', index: 'ContactNo', sortable: false, editable: true, editoptions: { size: "20", maxlength: "30"} },
                                { name: 'EmpId', index: 'EmpId', sortable: false, editable: true, editoptions: { size: "20", maxlength: "30"} },
                                { name: 'MailId', index: 'MailId', sortable: false, editable: true, editoptions: { size: "40", maxlength: "50"} },
 {name: 'RoleName', index: 'RoleName', sortable: false }
  ],


                    editurl: ISM_Web_Path + '/Test/TestHandler/UpdateTestContacts/' + ISMAjaxHandlerName,                 

                    ajaxRowOptions: {
                    afterEditRow: function (rowid, cellname, value, iRow, iCol) {
                    alert('success');
                    }
                    },                 
                    serializeRowData: function (postdata) {
                    return { ContactInfo: JSON.stringify(postdata) };                     
                    },
                    jsonReader: {
                        id: 'Id',
                        repeatitems: false
                    },
                    height: "100%",
                    pager: '#jqGrid-pager',
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    sortname: 'Id',
                    sortorder: 'desc',
                    viewrecords: true,
                    caption: "JQ grid data",
                    loadComplete: function () {
                        var table = this;
                        updatePagerIcons(table);                       
                    }
                });
});

 function getSearchPostData() {
            var searchData = {};
            searchData.Id=1;

            return JSON.stringify(searchData);
        }
 function updatePagerIcons(table) {
            var replacement =
                    {
                        'ui-icon-seek-first': 'icon-double-angle-left bigger-140',
                        'ui-icon-seek-prev': 'icon-angle-left bigger-140',
                        'ui-icon-seek-next': 'icon-angle-right bigger-140',
                        'ui-icon-seek-end': 'icon-double-angle-right bigger-140'
                    };
            $('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(function () {
                var icon = $(this);
                var $class = $.trim(icon.attr('class').replace('ui-icon', ''));

                if ($class in replacement) icon.attr('class', 'ui-icon ' + replacement[$class]);
            })
}

 <div class="row">
        <div class="col-xs-12">           
            <table id="jqGrid-container" class="ui-jqgrid ui-widget ui-widget-content ui-corner-all">
            </table>
            <div id="jqGrid-pager">
            </div>           
        </div>
    </div>

Handler function 处理函数

 public void UpdateTestContacts(HttpContext context)
        {
            TestContact contactInfo =new TestContact();
            string jsonData = context.Request.Params["ContactInfo"];
            MemoryStream TestContactMs = new MemoryStream(Encoding.UTF8.GetBytes(jsonData));
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TestContact));
            contactInfo = (RelationshipContact)serializer.ReadObject(TestContactMs );              
            //call manger function
            // return true or false
        }

TestContact.cs TestContact.cs

 public class TestContact
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string ContactNo { get; set; }

        public string EmpId { get; set; }

        public int RelId { get; set; }

        public int TypeId { get; set; }

        public string MailId { get; set; }

        public string RoleName { get; set; }       
    }

I have used jquery.jqGrid.min.js . 我用过jquery.jqGrid.min.js

I'm unable to display success message after editing the row successfully. 成功编辑行后,我无法显示成功消息。 I have used afterEditRow Please help me out. 我已经使用afterEditRow,请帮帮我。

There are no afterEditRow callback function inside of ajaxRowOptions . 有没有afterEditRow内回调函数ajaxRowOptions I recommend you to use aftersavefunc callback function of inline editing which can be specified as afterSave function of formatoptions : 我建议您使用内联编辑的aftersavefunc回调函数,可以将其指定为formatoptions afterSave函数:

formatter: 'actions',
formatoptions: {
    keys: true,
    afterSave: function (rowid, response, postdata, options) {
        alert("success");
    },
    delOptions: { recreateForm: true, beforeShowForm: beforeDeleteCallback }
}
 ajaxRowOptions: {
                  success: function (data, textStatus) {
                    if(textStatus=="true")
                    {
                    alert('success');
                    }
                    else
                    {
                    alert('failure');
                    }
                  }
 }

I'm returning true in handler . 在处理程序中返回true Above code is working for me. 上面的代码为我工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM