新しいエントリを追加するために、AJAXポップアップウィンドウと組み合わせてページ付けのあるWebGridを使用しています。エントリを追加した後、WebGridの下部にあるページネーションリンクが非アクティブになることに気づきました。
ポップアップは、コントローラーの保存アクションを呼び出します。このアクションは、次のように終了します。
return PartialView("_PersonGrid", pModel.Persons);
ここで使用されるビューは3つあります。インデックス、グリッド、ポップアップ。グリッドはインデックスに埋め込まれており、グリッドとインデックスのボタンをクリックするとポップアップを呼び出すことができます。
インデックスビューには次のコードがあります。
@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "myUserGrid" }))
{
<div id="myUserGrid">
@Html.Partial("_PersonGrid", Model.Persons)
</div>
<br />
//other code
}
グリッドビュー(_PersonGrid.cshtml)は次のとおりです。
@model IEnumerable<CIMsWebApp.Client.Group.Entities.IPerson>
@{ var grid = new WebGrid(Model, canSort: true, canPage: true, defaultSort: "UserName", ajaxUpdateContainerId: "myUserGrid"); }
@grid.GetHtml(
tableStyle: "dataGrid",
headerStyle: "header",
alternatingRowStyle: "evenRow",
columns: grid.Columns
(
grid.Column(header: "User Name", columnName: "UserName", format: item => Html.Raw("<a href='#' class='userNames' data-personid='"+item.PersonId+"'>" + item.UserName + "</a>"), canSort: false),
grid.Column(header: "Role(s)", columnName: "Rolebuilder", canSort: false),
grid.Column(header: "Active", columnName: "ActiveIndBuilder", canSort: false),
grid.Column(header: "Action", format:
@<span><input type="button" class="edit-user" id="@item.PersonId" value="EDIT" />
</span>, canSort: false)
)
)
最後に、ポップアップビューは次のとおりです。
@model CIMsWebApp.Models.PersonModel
@using (Html.BeginForm("Save", "Person", FormMethod.Post, new { id = "formUser" }))
{
//code
}
最初にページにアクセスしたとき、またはページを更新すると、ページが再びアクティブになります。