无法使用JQGrid添加行

时间:2011-06-14 06:20:03

标签: asp.net asp.net-mvc-3

这是JQGrid设置信息

jQuery(document).ready(function () {
    jQuery("#list").jqGrid({
        url: '/TabMaster/GetGridData',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['col ID', 'First Name', 'Last Name'],
        colModel: [
              { name: 'colID', index: 'colID', width: 100, align: 'left' },
              { name: 'FirstName', index: 'FirstName', width: 150, align: 'left', editable: true },
              { name: 'LastName', index: 'LastName', width: 300, align: 'left', editable: true },
            ],
        pager: jQuery('#pager'),
        rowNum: 4,
        rowList: [1, 2, 4, 5, 10],
        sortname: 'colID',
        sortorder: "asc",
        viewrecords: true,
        multiselect: true,
        imgpath: '/scripts/themes/steel/images',
        caption: 'Tab Master Information'
    }).navGrid('#pager', { edit: true, add: true, del: true },
    // Edit options
           {
           savekey: [true, 13],
           reloadAfterSubmit: true,
           jqModal: false,
           closeOnEscape: true,
           closeAfterEdit: true,
           url: "/TabMaster/Edit/",
           afterSubmit: function (response, postdata) {
               if (response.responseText == "Success") {
                   jQuery("#success").show();
                   jQuery("#success").html("Company successfully updated");
                   jQuery("#success").fadeOut(6000);
                   return [true, response.responseText]
               }
               else {
                   return [false, response.responseText]
               }
           }
       },
    // Add options
           {},
    // Delete options
           {url: '/TabMaster/Remove' }
           );
});

以下是使用JQGrid获取数据和更新数据的详细信息

#region "JQGrid Actions"
            public JsonResult GetGridData(string sidx, string sord, int rows, int page)
            {
                int pageIndex = page;
                int totalRecords = Convert.ToInt32(_tabmasterService.Count());
                int totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
                IQueryable<TabMasterViewModel> tabmasters = _tabmasterService.GetQueryTabMasterList(sidx, sord, rows, page);
                var jsonData = new
                {
                    total = totalPages,
                    page = page,
                    records = totalRecords,
                    rows = (from tm in tabmasters
                            select new
                            {
                                id = tm.colID,
                                cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName }
                            }).ToArray()
                };
                return Json(jsonData, JsonRequestBehavior.AllowGet);
            }
            [AcceptVerbs(HttpVerbs.Post)]
            public ActionResult Edit(int id, FormCollection updateExisting)
            {
                int _id = Convert.ToInt32(updateExisting["colID"]);
                TabMasterViewModel editExisting = new TabMasterViewModel();
                editExisting = _tabmasterService.GetSingle(x => x.colID == id);
                try
                {
                    UpdateModel(editExisting);
                    _tabmasterService.Update(editExisting);
                    return Content("Success");
                }
                catch (Exception e)
                {
                    return Content(e.Message);
                }
            }
[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Remove(string id)
        {
            List<String> ids = new List<String>(id.Split(','));
            for (int i = 0; i < ids.Count; i++)
            {
                int deleteid = Convert.ToInt32(ids[i]);
                TabMasterViewModel deleteExisting = new TabMasterViewModel();
                deleteExisting = _tabmasterService.GetSingle(x => x.colID == deleteid);
                _tabmasterService.Delete(deleteExisting);
            }
            return RedirectToAction("Index");
        }
#endregion

注意: - 获取和更新已成功运行,但我在ADD和DELETE方面遇到问题。 请有人帮我编写ADD和DELETE函数吗?

1 个答案:

答案 0 :(得分:2)

以下是ADD,EDIT和DELETE 的完整解决方案 * index.cshtml *

jQuery(document).ready(function () {
        jQuery("#list").jqGrid({
            url: '/TabMaster/GetGridData',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['col ID', 'First Name', 'Last Name'],
            colModel: [
                  { name: 'colID', index: 'colID', width: 100, align: 'left', searchoptions: { sopt: ['eq', 'ne', 'cn']} },
                  { name: 'FirstName', index: 'FirstName', width: 150, align: 'left', editable: true },
                  { name: 'LastName', index: 'LastName', width: 300, align: 'left', editable: true },
                ],
            pager: jQuery('#pager'),
            rowNum: 4,
            rowList: [1, 2, 4, 5, 10],
            sortname: 'colID',
            sortorder: "asc",
            viewrecords: true,
            multiselect: true,
            imgpath: '/scripts/themes/steel/images',
            caption: 'Tab Master Information'
        }).navGrid('#pager', { edit: true, add: true, del: true },
        // Edit options
            {
            savekey: [true, 13],
            reloadAfterSubmit: true,
            jqModal: false,
            closeOnEscape: true,
            closeAfterEdit: true,
            url: "/TabMaster/Edit/",
            afterSubmit: function (response, postdata) {
                if (response.responseText == "Success") {
                    jQuery("#success").show();
                    jQuery("#success").html("Company successfully updated");
                    jQuery("#success").fadeOut(6000);
                    return [true, response.responseText]
                }
                else {
                    return [false, response.responseText]
                }
            }
        },
        // Add options
             {url: '/TabMaster/Create', closeAfterAdd: true },
        // Delete options
               {url: '/TabMaster/Remove' },
               { closeOnEscape: true, multipleSearch: true,
                   closeAfterSearch: true
               }
               );
    });

<强> controller.cs

#region "JQGrid Actions"
        public JsonResult GetGridData(string sidx, string sord, int rows, int page)
        {
            int pageIndex = page;
            int totalRecords = Convert.ToInt32(_tabmasterService.Count());
            int totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
            IQueryable<TabMasterViewModel> tabmasters = _tabmasterService.GetQueryTabMasterList(sidx, sord, rows, page);
            var jsonData = new
            {
                total = totalPages,
                page = page,
                records = totalRecords,
                rows = (from tm in tabmasters
                        select new
                        {
                            id = tm.colID,
                            cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName }
                        }).ToArray()
            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
        }
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection updateExisting)
        {
            int _id = Convert.ToInt32(updateExisting["colID"]);
            TabMasterViewModel editExisting = new TabMasterViewModel();
            editExisting = _tabmasterService.GetSingle(x => x.colID == id);
            try
            {
                UpdateModel(editExisting);
                _tabmasterService.Update(editExisting);
                return Content("Success");
            }
            catch (Exception e)
            {
                return Content(e.Message);
            }
        }
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Remove(string id)
        {
            List<String> ids = new List<String>(id.Split(','));
            for (int i = 0; i < ids.Count; i++)
            {
                int deleteid = Convert.ToInt32(ids[i]);
                TabMasterViewModel deleteExisting = new TabMasterViewModel();
                deleteExisting = _tabmasterService.GetSingle(x => x.colID == deleteid);
                _tabmasterService.Delete(deleteExisting);
            }
            return RedirectToAction("Index");
        }
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection FormValue)
        {
            if (ModelState.IsValid)
            {
                TabMasterViewModel addNew = new TabMasterViewModel();
                addNew.FirstName = FormValue["FirstName"];
                addNew.LastName = FormValue["LastName"];
                _tabmasterService.Add(addNew);
            }
            return RedirectToAction("Index");
        }
        #endregion