0

新しいエントリを追加するために、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

}

最初にページにアクセスしたとき、またはページを更新すると、ページが再びアクティブになります。

4

2 に答える 2

3

あなたの"ajaxUpdateContainerId:"myUserGrid""はid="myUserGrid"のdivであり、パーシャルがそこにロードされていると思います。間違っている場合は訂正してください。ただし、divはパーシャルに含まれているはずです。少し混乱することもありますが、これを試してみてください。

意見:

@*Everything else except the div*@
@{Html.RenderPartial("_PersonGrid", Model)

PartialView:

@model IEnumerable<CIMsWebApp.Client.Group.Entities.IPerson>
<div id="myUserGrid">
    @{  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)
        )
    )
</div>

これが機能しない場合は、追加のデータ(パーシャルを呼び出すビュー、保存アクションを呼び出す場所と方法など)を指定します。

于 2012-10-30T14:48:25.003 に答える
0

WebGridページネーションが実際にどのように機能するかを調べた後、保存を実行した後、SaveメソッドでGETメソッドを呼び出そうとしているようです。そこで、この目的のためにメソッドを作成し、それをIndexメソッドにリダイレクトしました。最後の2つのパラメータは、クエリ文字列に直接渡され、ページネーションで使用されます。

[ActionName("Save")]
public ActionResult Pagination(string page, string __, long id = 0)
{
  return RedirectToAction("Index", new {id = id, page=page, __ = __ }); 
} 
于 2012-12-05T12:32:31.500 に答える