1

私の MVC3 カミソリ ページでは、webgrid を使用して、約 100 以上のレコードのリストを表示しています。

ページ サイズを 10 に設定していますが、ページングと並べ替えは正常に機能しています。ここでの唯一の問題は、webgrid に「削除」ハイパーリンクがあるページにあります。「削除」をクリックすると、レコードが削除され、ページがリロードされます。しかし、ページをリロードすると、ページ1に戻ります

たとえば、ページ 4 で [削除] をクリックすると、そのレコードが削除されてページ 1 に移動しますが、ページ 4 自体に残りたいとします。これを達成する方法に関する提案。

public ViewResult Index(int? page, string sort)
        {
            var startPage = 0;
            if (page.HasValue && page.Value > 0)
            {
                startPage = page.Value - 1;
            }
            vm.Employees = GetAllEmployeeData(startPage, vm.PageSize, sort);
            vm.TotalRecords = context.TableEmployee.Count();            
            return View(vm);
        }


public IEnumerable<Employees> GetAllEmployeeData(int page, int records, string sort)
        {

            IEnumerable<Employees> EmployeeData = null;

            EmployeeData = context.TableEmployee.Where(e => e.IsActivated == true)
               .Select(e => new Employees{ EmpID = e.EmpID, Name= e.Name, Joiningdate = e.Joiningdate , Department = e.DeptName}).AsEnumerable<Employees>();

            switch (sort)
            {
                case "Department":
                    EmployeeData = EmployeeData .OrderBy(r => r.Department);
                    break;
                case "JoiningDate":
                    EmployeeData = EmployeeData .OrderBy(r => r.JoiningDate);
                    break;
                default:
                    EmployeeData = EmployeeData .OrderBy(r => r.Name);
                    break;
            }

            EmployeeData  = EmployeeData .Skip(page * records).Take(records).ToList();
            return EmployeeData ;

        }



 public ActionResult DeleteSelectedEmployee(int empId)
        {

            ContentsViewModel model = new ContentsViewModel();
            int timelineItemId = 0;
           EmployeeData E = context.TableEmployee.Find(empId);
            context.TableEmployee.Remove(E);
            context.SaveChanges();


            return RedirectToAction("Index");
        }

ここに私のウェブグリッドがあります

@{var webgrid = new WebGrid(canPage: true, rowsPerPage: Model.PageSize, canSort: true, ajaxUpdateContainerId: "grid");
          webgrid.Bind(Model.Employees, rowCount: Model.TotalRecords, autoSortAndPage: false);
          webgrid.Pager(WebGridPagerModes.Numeric);
            @webgrid.GetHtml(tableStyle: "webgridTable", htmlAttributes: new { id = "grid" },

                           columns: webgrid.Columns(
                           webgrid.Column("Name", "Name"),
                           webgrid.Column("Department", "Department"),

                      webgrid.Column("JoiningDate", "Join Date", format: @<text>@item.JoiningDate.ToString("dddd, MMMM d, yyyy")</text>),


                                                                                                      webgrid.Column(header: "Action", format: (item) => Html.ActionLink("Edit", "Edit", new { empId = item.EmpID })),
                                                                                                   webgrid.Column(format: (item) => Html.ActionLink("Delete", "Delete Record", new { empId = item.EmpID }))


                                                                                               ));
        }
4

0 に答える 0