有在用ASP.NET Ajax 的朋友一定知道,微軟做了很方便的UpdatePanel,從此只要把做好的GridView拉到UpdatePanel內馬上享用現成的AJAX程式,但是使用Ajax Gridview的缺點也就此產生。呵呵
這應該算是一種困擾吧,假設每頁顯示100筆資料,當你看到第3頁時,突然想看某個項目的細項,當你點進去看到細項頁之後,想說按瀏覽器的上一頁會回到第3頁繼續瀏覽時,很抱歉!保證一定會回到第1頁,屢試不爽^^
有問題就會有改善的動力,微軟在新版的ASP.NET 3.5 Extendsion放入了History功能,雖然早在之前就有獨立的Control可以用,但是那是過去式了,有新的東西就來用新的吧
要先安裝ASP.NET 3.5 Extendsion如果web hosting 有支援.Net 3.5的話,我用的web hosting剛好就有支援
開專案時當然也要選ASP.NET 3.5 Extendsion囉
沒選Extendsion,ScriptManager不會出現EnableHistory讓你選
.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableHistory="true" EnableStateHash="false" />
底下當然還有UpdatePanel和你要顯示的Gridview之類的控件
我試把過ViewState關掉都可以用History的功能
.vb
If ScriptManager1.IsInAsyncPostBack And Not ScriptManager1.IsNavigating Then
ScriptManager1.AddHistoryPoint("PageIndex", index, ConfigurationManager.AppSettings("PageTitle").ToString() & "- 全部案件第 " & index & " 頁")
End If
pager1.CurrentIndex = index
pager1.ItemCount = PostedBLL.GetPostedDataCount("All")
CaseRepeater.DataSource = PostedBLL.GetPostedByCustomPaging(index, pager1.PageSize, "All")
CaseRepeater.DataBind()
CaseUpdatePanel.Update()
End Sub
Protected Sub ScriptManager1_Navigate(ByVal sender As Object, ByVal e As System.Web.UI.HistoryEventArgs) Handles ScriptManager1.Navigate
Dim indexString As String = e.State("PageIndex")
Dim CaseIndex As Integer
If String.IsNullOrEmpty(indexString) Then
CaseIndex = 1
Else
CaseIndex = Convert.ToInt32(indexString)
End If
Page.Title = ConfigurationManager.AppSettings("PageTitle").ToString() & "- 全部案件第 " & CaseIndex & " 頁"
BindRepeater(CaseIndex)
End Sub
0 comments:
張貼留言