2013-05-15 90 views
1

問題是,分頁工作正常,直到第9頁的頁碼,並且當我請求雙倍或更多數字的頁面時,它將佔用最後的數字並忽略其餘的數字,例如。如果我請求頁碼10,則它通過傳遞「?page = 0」作爲查詢字符串來顯示頁面0,並丟棄1,並且如果我請求頁碼,例如, 458則顯示頁碼8通過傳遞 「?頁= 8」 作爲查詢字符串,並丟棄45從458 這裏是我的代碼:MVC3中的WebGrid分頁問題

在Javacsript:

 $(function() { 
    $('tfoot a').click(function() { 
     // try to extract the page number from the link 
     var page = this.href.match(/page=([0-9])+/)[1]; 

     // submit the form so that the POST action is invoked 
     var form = document.forms[0]; 
     form.action = '/Session/Index?page=' + page; 
     form.submit(); 

     return false; 
    }); 
}); 
     </script> 

鑑於:

var grid = new WebGrid(source: Model.ListSessions, rowsPerPage: 5, 
    canPage: true, canSort: false, defaultSort: "Absentee"); 

    @grid.GetHtml(
    htmlAttributes: new { id = "grid" }, 
    tableStyle: "grid", 
    headerStyle: "head", 
    alternatingRowStyle: "alt", 
    columns: grid.Columns(
          grid.Column(format: @<text> <input type="hidden" id="ColorCodeValue" name="ColorCodeValue" value="@item.ColorCodeValue" /> </text>, style: "width:0px;"), 
          grid.Column("CreatedBy", "Created By"), 
          grid.Column("Session Title", format: (item) => Html.ActionLink((string)item.SessionTitle, MVC.Session.ActionNames.EditSession, 
          new { id = item.SessionId })), 
          grid.Column("SessionID", "Simple Session ID"), 
          grid.Column("StartDate", "Start Date"), 
          grid.Column("StartTime", "Start Time"),        
          grid.Column("SessionStatus", "Status"), 
          grid.Column("Prep Materials", format: @<text><a onclick="SessionClick();" id="@item.EnableViewLink" href="@Url.Action(MVC.Session.Actions.ViewSession((string)item.SessionID))">View</a><a id="UploadSessionMaterial" href="@Url.Action(MVC.Session.Actions.UploadSession((Int32)item.SessionId))">Upload</a> </text>), 
          grid.Column("Action", format: @<text><a href="@Url.Action(MVC.Session.Actions.ViewSession((int)item.SessionId))">View</a><a id="@item.IsPublished" class="@item.IsTranscriptExists" href="@Url.Action(MVC.Session.Actions.EditTranscript((Int32)item.SessionId))">Edited Session </a></text>) 
            ), mode: WebGridPagerModes.All) 

和控制器:

[HttpPost] 
    public virtual ActionResult Index(SessionViewModel model) 
    { 
     model = GetSessionListing(model); 
     return View(model); 
    } 


    private SessionViewModel GetSessionListing(SessionViewModel model) 
    { 
     if (model == null) 
     { 
      model = new SessionViewModel(); 
     } 
     int page = 1; 
     if (Convert.ToInt64(Request["page"]) != null) 
      int.TryParse(Request["page"], out page); 

     //Rest of Coding here   

     return model; 
    } 

任何幫助將是偉大的! 如果你仍然需要更多的問題,請問我。 謝謝!

回答

1
// try to extract the page number from the link 
var page = this.href.match(/page=([0-9])+/)[1]; 

正確:

// try to extract the page number from the link 
var page = this.href.match(/page=([0-9]+)/)[1]; 

你需要一個「+」裏面的「()」,因爲這「+」是必需的匹配模式,而不是圖案組爲你正在嘗試在這裏做。

正則表達式總是很棘手!

0

您共享的代碼沒有提供足夠的信息來幫助解決此問題。我認爲問題可能出現在您提交請求以加載網頁中的下一頁數字的代碼中。而當你有你自己提到:

*

「之說,例如如果我請求一個頁面10號之後,它 通過來顯示頁面0‘頁= 0’作爲查詢字符串,並丟棄1 「

*

我認爲這個問題是真的在您的請求的查詢字符串被形成/!您可以分享該代碼以幫助確定問題。

+0

您好@Nagesh Chopra,感謝您的回覆,請再次查看我的代碼我已更新它,因爲我正在請求該頁面時忘記發佈代碼。 –