私はAsp.Net MVC3のWebGridコントロールに少し問題があります。私が欲しいのは、ajaxとwebgridを使って検索ビューを実行することです。このような何か:Asp Mvc3 webgrid ajaxによるページングとフィルタリング
検索基準_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __
件名:_ __ _ _
タスクの種類:_ ____
は、検索
WebGridのwithPaging
を提出します。
ボタン検索をクリックすると、ajaxでHTTPostアクションが呼び出され、検索条件が適用されます。しかし、私がページングをしようとすると、HTTPGetアクションに行きます。このようにして、検索基準によるフィルタは実行されない。
グリッドを部分的なビューの内側に配置します。
@model IEnumerable<MVC3.Models.Task>
@{
var grid = new WebGrid(null, rowsPerPage: 2, canPage: true, canSort: true, ajaxUpdateContainerId: "myGrid");
grid.Bind(Model, rowCount: 3, autoSortAndPage: true);
grid.Pager(mode: WebGridPagerModes.All);
@grid.GetHtml(
columns: grid.Columns(
grid.Column(format: (item) => Html.ActionLink("Assign Notifications", "AssignNotifications", new { id = item.TaskId })),
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.TaskId })),
grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.TaskId })),
grid.Column("Subject"),
grid.Column("Comment"),
grid.Column(columnName: "Status", header: "Status", format: (item) => item.TaskStatu.Name),
grid.Column(columnName: "StartDate", header: "Start Date", format: (item) => item.StartDate.ToString("MM/dd/yyy")),
grid.Column(columnName: "Deadline", header: "Dead Line", format: (item) => item.Deadline.ToString("MM/dd/yyy"))
)
);
}
そして、私のIndexビューは、次のようになります:そこにコードがある誰もが私の問題を解決する方法を知っていれば、私は感謝するだろうだから、
@model MVC3.ViewModel.TaskSearchViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
Task Index</h2>
<hr />
@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "myGrid" }))
{
<div id="Filters">
<fieldset>
<legend>Search criteria</legend>
<br />
<table>
<tr>
<td>
@Html.LabelFor(x => x.Subject)
</td>
<td>
@Html.TextBoxFor(x => x.Subject, new { style = "width: 255px;" })
</td>
</tr>
<tr>
<td>
@Html.LabelFor(x => x.TaskTypeId)
</td>
<td>
@Html.DropDownListFor(x => x.TaskTypeId, Model.GetTaskTypesSelectList(), "Select", new { style = "width: 260px;" })
</td>
</tr>
<tr>
<td>
@Html.LabelFor(x => x.ResponsableId)
</td>
<td>
@Html.DropDownListFor(x => x.ResponsableId, Model.GetResponsablesSelectList(), "Select", new { style = "width: 260px;" })
</td>
</tr>
<tr>
<td>
@Html.LabelFor(x => x.StatusId)
</td>
<td>
@Html.DropDownListFor(x => x.StatusId, Model.GetStatusSelectList(), "Select", new { style = "width: 260px;" })
</td>
</tr>
</table>
</fieldset>
</div>
@Html.Hidden("page")
<input id="btnSearch" type="submit" value="Search" />
}
<br />
<div id="myGrid">
@Html.Partial("_TaskSearchResult", Model.ResultTask)
</div>
<br />
@Html.ActionLink("Create new Task", "NewTask")
。
私はあなたがするたびにあなたは、次のページのリンクをクリックしてグリッドを交換しているので、それはだと思う
私は同じ問題を抱えています。 http://stackoverflow.com/questions/8999390/mvc-3-webgrid-paging-doesnt-return-orginal-search-results –
ここに私が使用した解決策があります。 http://forums.asp.net/t/1742017.aspx/1 –