Asp.net mvc 4 使用WebGrid分页MVC 4保留搜索筛选器

Asp.net mvc 4 使用WebGrid分页MVC 4保留搜索筛选器,asp.net-mvc-4,filter,pagination,webgrid,Asp.net Mvc 4,Filter,Pagination,Webgrid,我无法在Webgrid中跨页面保留筛选器(搜索)。与单击下一页时一样,搜索条件将丢失。有什么想法吗 局部视图: @model IEnumerable<NorthwindMVC_2.Models.GetOrdersResult> @using NorthwindMVC_2.Models; <input type="hidden" id="page" /> @{ ViewBag.Title = "_Grid"; Layout = null; } @using (Html

我无法在Webgrid中跨页面保留筛选器(搜索)。与单击下一页时一样,搜索条件将丢失。有什么想法吗

局部视图:

@model IEnumerable<NorthwindMVC_2.Models.GetOrdersResult>
@using NorthwindMVC_2.Models;

<input type="hidden" id="page" />

@{
ViewBag.Title = "_Grid";
Layout = null;
}

@using (Html.BeginForm(FormMethod.Get)) 
{  
<input type="search" name="SearchString" style="width:650px; margin-right:10px" placeholder="ID,  Ship Name, Ship Address, Required Date, Postal Code" id="txtSearch" />
<input type="submit" value="Search"/>
<input type="button" value="Clear" id="btnClear"/>

<script>


$("#btnClear").live("click", refreshGrid);

function refreshGrid() {

    var pageNumber = '@ViewBag.page';
 //$("#txtSearch").val("");

 $.ajax(
 {
     type: "GET",
     url: '@Url.Action("OrdersList", "Orders")',
 data: {
     searchText: $("#txtSearch").val(),
     page: pageNumber
 },
 dataType: "html",
 success: function (data) {
     $("#agrid").html(data);
 }
 })
 }

 </script>

<script type="text/javascript">

var PageNumber = '@ViewBag.page';
    $(document).ready(function page() {
        //alert(PageNumber);
    });


    //var page = '@ViewBag.page';



</script>

<style type="text/css">
    .webGrid { margin: 4px; border-collapse: collapse; width: auto; }
    .header { background-color: #d3dce0; font-weight: bold; color: whitesmoke; }
    .webGrid th, .webGrid td {border: 1px solid #C0C0C0; padding: 5px; }
    .alt { background-color: lightgrey; color: #000; }
    .footer { padding:10px; background-color:#d3dce0; color:black;}
    .birthdate { width:200px;}
    .id { width:50px;}
    .general { width: 120px;}
</style>


   var grid = new WebGrid(null,
            defaultSort: "",
            rowsPerPage: 10,
            canPage:true,
            ajaxUpdateContainerId:"grid",
            selectionFieldName: "SearchString",
            sortFieldName:"SortColumn",
            sortDirectionFieldName:"SortOrder");

<div style="display:none">
@grid.Bind(Model, autoSortAndPage: false, rowCount: ViewBag.tr);
</div>


 if (Model.Count() > 0)
 { 

 <div id="grid">

        @grid.GetHtml(
            tableStyle: "webGrid",
            headerStyle: "header",
            alternatingRowStyle: "alt",
            footerStyle: "footer",
            mode: WebGridPagerModes.All,
            numericLinksCount: 9,
            firstText: "First",
            lastText: "Last",
            previousText: "<",
            nextText: ">",
            columns: grid.Columns(
            grid.Column("OrderID", header:"ID", style:"id"),
            grid.Column("ShipName", "Name", style:"birthdate" ,  format: @<text>@Html.ActionLink((string)item.ShipName, "Edit", "Orders", new {  RowID = item.RowID, orderId = item.OrderID, page= (int) @ViewBag.page }, null)</text>),
            grid.Column("ShipAddress", header:"Address", style:"birthdate"),
            grid.Column("RequiredDate", header:"Required Date", style:"birthdate"),
            grid.Column("ShipPostalCode", header:"Postal Code", style:"general"),

              @*grid.Column("Action", format: @<text>
                <button class="edit-user display-mode" >Edit</button>
                <button class="save-user edit-mode"  >Save</button>
                <button class="cancel-user edit-mode" >Cancel</button>
                </text>,  style: "" , canSort: false)*@

            //grid.Column("Edit", format: (item) => Html.ActionLink("Edit", "Edit", "Orders", new { RowID = item.RowID, orderId = item.OrderID, page= (int) @ViewBag.page },  new  {  style = "color:#000" })),
            grid.Column("Delete", format: (item) => Html.ActionLink("Delete", "Delete", new { orderId = (int)item.OrderID }, new { onclick = "return confirm('Do you want to Delete this Order?')", style = "color:#000" })
        )
    )
)

</div>
  }
 else
 { 
<p>
No records found.</p>
}}      
<script type="text/javascript">

   var searchText = $("#txtSearch").val();
   $(function () {

       $('tfoot a').click(function () {
           var pageNumber = '@ViewBag.page';

          // $("#txtSearch").val("");
            $.ajax(
            { searchText : $("#txtSearch").val(),
                type: "GET",
                url: '@Url.Action("OrdersList", "Orders")',
                 data: {
                     searchText: $("#txtSearch").val(),
                     page: pageNumber
                 },
                 dataType: "html",
                 success: function (data) {
                     $("#agrid").html(data);
                 }
             })




       //    // when the user clicks on any of the pager links
       //    // try to extract the page number from the link and
       //    // set the value of the hidden field
       //    var SearchString = $("#txtSearch")
       //    var page = this.href.match(/page=([0-9])+/)[1];
       //    $('#page').val(page);

       //    alert(page);
       //    // submit the form so that the POST action is invoked
       //    // passing along the search criteria (Name and Year) along
       //    // with the page hidden field value to the Index action
       //    $('form').submit();

       //    // cancel the default action of the link which is to simply redirect
       //    // to the Index action using a GET verb.
       //    return false;
       });
   });

</script> 
@model IEnumerable
@使用NorthwindMVC_2.0模型;
@{
ViewBag.Title=“_网格”;
布局=空;
}
@使用(Html.BeginForm(FormMethod.Get))
{  
$(“#btnClear”).live(“单击”,刷新网格);
函数refreshGrid(){
var pageNumber='@ViewBag.page';
//$(“#txtSearch”).val(“”);
$.ajax(
{
键入:“获取”,
url:'@url.Action(“订单列表”、“订单”),
数据:{
searchText:$(“#txtSearch”).val(),
页码:页码
},
数据类型:“html”,
成功:功能(数据){
$(“#agrid”).html(数据);
}
})
}
var PageNumber='@ViewBag.page';
$(文档).ready(功能页(){
//警报(页码);
});
//var page='@ViewBag.page';
.webGrid{margin:4px;边框折叠:折叠;宽度:自动;}
.header{背景色:#d3dce0;字体大小:粗体;颜色:WhiteMoke;}
.webGrid th、.webGrid td{边框:1px实心#c0c0;填充:5px;}
.alt{背景色:浅灰色;颜色:#000;}
.footer{填充:10px;背景色:#d3dce0;颜色:黑色;}
.出生日期{宽度:200px;}
.id{宽度:50px;}
.general{宽度:120px;}
var grid=新WebGrid(空,
defaultSort:“”,
行页码:10,
坎佩奇:没错,
ajaxUpdateContainerId:“网格”,
selectionFieldName:“搜索字符串”,
sortFieldName:“SortColumn”,
sortDirectionFieldName:“SortOrder”);
@Bind(Model,autoSortAndPage:false,rowCount:ViewBag.tr);
如果(Model.Count()>0)
{ 
@grid.GetHtml(
表样式:“webGrid”,
headerStyle:“header”,
alternatingRowStyle:“alt”,
页脚样式:“页脚”,
模式:WebGridPagerModes.All,
数字链接:9,
firstText:“第一”,
lastText:“Last”,
前文:“,
列:grid.columns(
grid.Column(“OrderID”,标题:“ID”,样式:“ID”),
grid.Column(“ShipName”、“Name”,样式:“birthdate”,格式:@@Html.ActionLink((string)item.ShipName,“Edit”,“Orders”,new{RowID=item.RowID,orderId=item.orderId,page=(int)@ViewBag.page},null)),
网格栏(“发货地址”,标题:“地址”,样式:“出生日期”),
grid.列(“RequiredDate”,标题:“必需日期”,样式:“生日”),
网格栏(“ShipPostalCode”,标题:“邮政编码”,样式:“一般”),
@*网格.列(“操作”,格式:@
编辑
拯救
取消
,样式:“”,可排序:false)*@
//grid.Column(“编辑”,格式:(item)=>Html.ActionLink(“编辑”,“编辑”,“订单”,新建{RowID=item.RowID,orderId=item.orderId,page=(int)@ViewBag.page},新建{style=“color:#000”}),
grid.Column(“Delete”,format:(item)=>Html.ActionLink(“Delete”,“Delete”,new{orderId=(int)item.orderId},new{onclick=“return confirm('是否要删除此订单?')”),style=“color:#000”})
)
)
)
}
其他的
{ 

没有找到任何记录

}} var searchText=$(“#txtSearch”).val(); $(函数(){ $('tfoot a')。单击(函数(){ var pageNumber='@ViewBag.page'; //$(“#txtSearch”).val(“”); $.ajax( {searchText:$(“#txtSearch”).val(), 键入:“获取”, url:'@url.Action(“订单列表”、“订单”), 数据:{ searchText:$(“#txtSearch”).val(), 页码:页码 }, 数据类型:“html”, 成功:功能(数据){ $(“#agrid”).html(数据); } }) ////当用户单击任何寻呼机链接时 ////尝试从链接中提取页码,然后 ////设置隐藏字段的值 //var SearchString=$(“#txtSearch”) //var page=this.href.match(/page=([0-9])+/)[1]; //$('第页').val(第页); //警报(第页); ////提交表单以便调用POST操作 ////将搜索条件(名称和年份)传递给 ////将页面隐藏字段值添加到索引操作 //$('form').submit(); ////取消链接的默认操作,该操作只是重定向 ////使用GET谓词将其添加到索引操作。 //返回false; }); });
在$('tfoot a')中。单击(函数()…它将通过ajax请求向action方法发送一个“GET”请求(/?page=1)。您必须在此代码中处理寻呼机链接单击事件

你可以这样做

$('tfoot a').click(function () {

        var form = $('#yourformid');
        form.attr("action", this.href);
        $(this).attr("href", "#");
        form.submit();

    });
那么只有它会保留您的搜索条件模型

请注意这件事