2012-03-13 33 views
0

我試圖讓一種形式,當它返回時,將具有相同狀態的控制寫VB.NET的形式,將是相同的狀態,當您返回到它

我有3個.net頁面,testa,testb,testc

testa,建立會話,並有一個按鈕去測試。 testb有一個複選框和一個按鈕去測試。 testc有一個返回頁面testb的按鈕。

我想要它,所以當我們離開testc,然後回來的複選標記將處於相同的狀態,但它不是。當我從頁面testc返回到頁面testb時,它保持不變selectb

這就是我所做的, 在頁面加載事件中,我將複選框設置爲等於「button」Session變量。在按鈕事件中,我保存按鈕,在Session變量和呼叫頁面選中狀態TESTC

代碼

第一個

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    Server.Transfer("testb.aspx") 
End Sub 

網頁B

Partial Class testb 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
     Dim t As Boolean 
     t = Session.Item("button") 
     CheckBox1.Checked = t 
    End Sub 

    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
     Dim t As Boolean 

     t = CheckBox1.Checked 
     Session.Item("button") = t 

     Server.Transfer("testc.aspx") 
    End Sub 
End Class 

Ç

Partial Class testc 
    Inherits System.Web.UI.Page 

    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
     Server.Transfer("testb.aspx") 
    End Sub 
End Class 
+0

也許你想達到什麼樣的更容易使用[嚮導](http://msdn.microsoft.com/en-us/library/fs0za4w6.aspx)控制完成。 – Filburt 2012-03-13 17:35:57

回答

0

數據在會話存儲爲Object。你需要做的是從會話中獲取價值,然後將其轉換爲Boolean,如果它不是null(VB中的Nothing)。我們以前已經利用這一技術:

Dim rawValue As Object = Session.Item("button") 
Dim realValue as Boolean 

If rawValue IsNot Nothing Then 
    realValue = Boolean.Parse(rawValue.ToString()) 
End If 
+0

嗨,謝謝你回答我的問題,我能解決問題,問題是頁面加載事件將在按鈕事件之前被調用,因此舊值將被加載,在他們被保存之前。我使用onload的prerender事件instad,幹得好! – 2012-03-14 00:00:07

+0

@Ted - 很好聽。您應該考慮在解決方案中發佈自己的答案。 – TLS 2012-03-14 00:07:15

0

這聽起來像你需要檢查IsPostBack財產在Page_Load方法來決定是否值應加載與否。當它是回發時,請不要從Session中加載。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     Dim t As Boolean = Session.Item("button") 
     CheckBox1.Checked = t 
    End If 
End Sub 
相關問題