2012-08-13 65 views
0

真的很奇怪...所以我試圖將我的gridview的頁面索引保存在會話變量中,然後在用戶導航回到gridView時重置索引。下面是我的代碼。奇數的Visual Studio檢查變量值

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) 
    If Not Page.IsPostBack Then 
     If Not Session("CurrentPage") Is Nothing AndAlso 
Session("CurrentPage") <= GridView1.PageCount Then 
      GridView1.PageIndex = Session("CurrentPage") 
     End If 
    End If 
End Sub 

好奇怪的是,當我斷點第二IF上方懸停在頁頁次它說,它是0.如果我再進入我的監視窗口,並在它(再次0)看,然後去回到我的代碼並再次懸停它是2(它應該是)!然後我可以繼續經過中斷點,頁面顯示在頁面2上。然而,這就是它變得非常奇怪的地方,如果我刪除了斷點並運行它,我最終將在第1頁!所以它就好像PageCount沒有更新,除非我在它上面放置了一個斷點並專門查看了它。任何人都可以解釋這種行爲以及如何解決這個問題?

UPDATE

這裏是有問題的變量的值的照片。您可以看到PageIndex未更新,因爲它從未進入IF聲明,因爲PageCount早於0的時刻!我不能是唯一一個由這個難住了:變量值/

圖片:enter image description here

回答

0

OK位哈克但有用。簡單使用;

If Not Session("CurrentPage") Is Nothing Then 
    GridView1.PageIndex = DirectCast(Session("CurrentPage"), Integer) 
End If 

無法獲取GridView.PageCount等於2,除了通過進入WatchWindow並刷新值字段(將很難解釋給你每天的在線用戶該怎麼做,這樣是不是真的一個選項:P)。所以我試着把它放棄。現在工作正常。可能會遇到一個頁面不存在錯誤,但我想這是不太可能的,因爲頁面數量根本沒有改變,Session("CurrecntPage")變量定期更新。

1

我猜你可能需要投你的會話值到整數

If Not Session("CurrentPage") Is Nothing AndAlso 
       DirectCast(Session("CurrentPage"), 
              Integer) <= GridView1.PageCount Then 
     GridView1.PageIndex = DirectCast(Session("CurrentPage"),Integer) 
    End If 
+0

作爲一個後續,如果OP使用'Option Strict On',這將是一個好主意。 – 2012-08-13 18:05:52

+0

嗯,不行,問題在於我的PageCount,它仍然是0.更改我的currentPage類型不會影響它。 – windowskm 2012-08-16 09:15:33