提交后留在选定行(保存)
我使用的是asp.net mvc4。 我有一个网格,您可以选择一行,然后您可以编辑该项目。 例如,您在第3页,并且您想要编辑该页面上的行。 所以你选择那一行。 但是在保存行之后,您将返回到第3页,但不再选择该行。 我有这个:
这是索引页面,您可以在其中选择一行。 您可以在哪里选择要对所选行执行的操作。
@if (!String.IsNullOrEmpty(item.UrlName) && !String.IsNullOrEmpty(item.FormName)) { @Html.RouteLink(Resources.Action.Navigation.Preview, "ProductPreview", new { productUrl = item.UrlName, customerSchema = custSchema }, new { target = "_blank" }) } else { @(Resources.Action.Navigation.Preview) } | @Html.ActionLink(Resources.Action.Navigation.Details, "Details", new { id = item.Id }) | @Html.ActionLink(Resources.Action.Navigation.Edit, "Edit", new { id = item.Id })
这是编辑页面:
用两个按钮:
@Html.RenderNotifications()
谢谢
我用它作为表格:
这是我的javascript:
$(document).ready(function () { var table = $('.table-responsive').DataTable(); $('#table-responsive tbody').on('click', 'tr', function () { if ($(this).hasClass('selected')) { $(this).removeClass('selected'); } else { table.$('tr.selected').removeClass('selected'); $(this).addClass('selected'); } }); });
这是我的编辑方法:
public ActionResult Edit(int? id) { var page = Session["page"]; Session["page"] = page; if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Product product = db.Products.Find(id); if (product == null) { throw new HttpException((int) HttpStatusCode.NotFound, null); } SetCreateEditProductLists(product, customerSchema); EditProductModel editModel = new EditProductModel(); editModel.Product = product; editModel.Db = db; DeserializeAuthenticationSettings(editModel); DeserializePaymentSettings(editModel); DeserializeConnectors(editModel); DeserializePrefillMappings(editModel); ViewBag.Model = editModel; return View(editModel); }
这是我的post编辑:
[HttpPost] [ValidateAntiForgeryToken] [ValidateInput(false)] public ActionResult Edit(EditProductModel entry) { entry.Product.ModificationDate = DateTime.UtcNow; //var page = TempData["page"]; //TempData["page"] = page; //ViewBag.CurrentPage = 2; if (ModelState.IsValid) { db.Entry(entry.Product).State = EntityState.Modified; db.Entry(entry.Product).Property(model => model.Guid).IsModified = false; db.Entry(entry.Product).Property(model => model.CreationDate).IsModified = false; db.Entry(entry.Product).Property(model => model.IsProduction).IsModified = false; entry.Product.IsProduction = StateHelper.IsTestMode() ? false : true; HandleProductSelections(entry.Product); SerializeAuthenticationSettings(entry); SerializePaymentSettings(entry); SerializeConnectors(entry); SerializePrefillMappings(entry); if (SaveDbChanges()) { // Record an audit trail event for an updated product. { ATEvent atEvent = AuditTrailHelper.NewEvent(ATEventType.ProductUpdated, HttpContext, db.Schema, entry.Product); atEvent.StringArg = entry.Product.Name; ATEventLogger.Current.LogEvent(atEvent); } AddDelayedNotification(Resources.Entity.Environment.ItemSavedMessage, Notification.NotificationType.Success); //return RedirectToAction("Index", new { page = page }); //var page = TempData["page"]; //TempData["page"] = page; var page = Session["page"]; Session["page"] = page; var id = Session["id"]; Session["id"] = id; return RedirectToAction("Index", new { page, id = entry.Product.Id }); } } AddDelayedNotification(Resources.Entity.Environment.ItemNotSavedError, Notification.NotificationType.Error); return Edit(entry.Product.Id); }
这是索引视图:
我现在这样:
$(document).ready(function () { var table = $('#example').data; $('#example tbody').on('click', 'tr', function () { if ($(this).hasClass('selected')) { $(this).removeClass('selected'); } else { table.$('tr.selected').removeClass('selected'); $(this).addClass('selected'); } }); });
和我的观点:
@if (!String.IsNullOrEmpty(item.UrlName) && !String.IsNullOrEmpty(item.FormName)) { @Html.RouteLink(Resources.Action.Navigation.Preview, "ProductPreview", new { productUrl = item.UrlName, customerSchema = custSchema }, new { target = "_blank" }) } else { @(Resources.Action.Navigation.Preview) } | @Html.ActionLink(Resources.Action.Navigation.Details, "Details", new { id = item.Id }) | @Html.ActionLink(Resources.Action.Navigation.Edit, "Edit", new { id = item.Id })
但问题是if ($(this).hasClass('selected')) {
没有被命中
这是解决方案:
好吧,你应该在编辑保存之后通过控制器传递一些参数,如IsSelected
和View
。 我可以看到你这样做,但另一方面:
RedirectToAction("Index", new { page, id = entry.Product.Id });
所以在你的View上你应该这样做,我想:
// Your row code
- 带有多个复选框列的GridView并选择所有列标题
- Asp net grid view使用jquery选择行
- 将多个添加到一个表单时,Asp.Net用户控件无法正常工作
- KnockoutJS,在ajax调用后更新ViewModel
- validation用户名ajax和json以及asp.net
- “状态信息对于此页面无效,可能已损坏”
- 通过ajax将当前页面html发送回服务器
- 从位于更新面板外部的控件触发asp.net事件
- 为什么Asp.Net MVC 5将@ Scripts.Render(“〜/ bundles / jquery”)放在_Layout.cshtml的底部?
Interesting Posts
带有UpdatePanel Viewstate问题的JQuery BlockUI
确定链接在用户单击时是否有效
从C#后面的ASP.NET代码调用jQuery函数
使用jQuery $ .ajax()将JSON数据传递给带有自定义BindingModel的.NET MVC Action的问题
ASP.NET AJAX PageMethods调用.NET 4.5 IIS 7.5的整个页面
当通过jQuery设置值时,访问c#中Page load上的Label值
如何在Javascript中向用户显示是/否消息框?
在jQuery对话框中,asp.net表单控件是不可读的,你如何解决它?
JQuery网络摄像头插件 – 无需PHP保存图像
Jquery获取表gridview中所有已检查行的值