2012-02-29 101 views
1

我知道標題含糊不清,所以我會在這裏完整地解釋我的問題。如何保持CheckBoxList的更改狀態?

所以,我運行VB.net 3.5。我有一個動態的服務器名稱列表,我想將它們放入CheckBoxList。該列表已填充,並使用相同的列表,爲每個列出的服務器繪製性能圖。我希望能夠檢查和取消選中代表服務器的複選框,並且當我舔一個更新按鈕時,它會創建一個新圖並只繪製仍然被檢查的服務器。我注意到在處理按鈕點擊之前頁面仍然加載,所以CheckBoxList將在能夠讀取當前CheckBoxList之前重新填充。有人對此有任何意見嗎? 這是我的負載。我填充我裏面ShowView()

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Me.IsPostBack Then 
    If _myQSVar.Count = 0 Then 
      Calendar1.SelectedDate = Date.Now.Date.AddMonths(-6) 
      Calendar2.SelectedDate = Date.Now.Date 
     End If 
     tbFromDate.Text = Calendar1.SelectedDate.ToShortDateString() 
     tbToDate.Text = Calendar2.SelectedDate.ToShortDateString() 
     lstControls = New List(Of System.Web.UI.Control) 
     ShowView() 
    End If 
End Sub 

我用一個簡單的載入我的CheckBoxList for循環

For each one As String in ServerList 
    chkboxList.Items.Add(one) 
Next 

的CheckBoxList我想嘗試當我的更新做的事件處理程序保存CheckBoxList的值按鈕。

Private Sub btnUpdateGraph_Click(sender As Object, e As System.EventArgs) Handles btnUpdateGraph.Click 
'insert code 
End Sub 
+0

發佈您的代碼。它可能是因爲每個頁面加載都重新綁定。如果他們能夠看到您的代碼指出可能導致問題的原因,那麼每個人都可以更輕鬆地爲您提供幫助。 – kd7 2012-02-29 14:03:03

回答

0

您是否在form.load上填充了checkboxlist?如果是這樣,請確保您檢查是否存在Page.ispostback。僅當它不是回發時才加載複選框列表。這將確保頁面(和複選框列表)在單擊時不會重新加載。

此外,請不要舔更新按鈕。他們真的不喜歡那樣!

+0

Riiiight。他們可能不會喜歡我舔更新按鈕....而且,當我檢查是否不是回發時,我將checkboxlist填充到page.load的塊中。 – 2012-02-29 15:35:58

0

我相信你在PageLoad事件中綁定了CheckboxList。只要將代碼中的給定的代碼塊中:

if(!IsPostback) 
{ 
// Bind your Checkbox List here 
} 

這隻會在情況下,如果網頁加載第一次,沒有任何後回發的CheckBoxList的綁定。

我希望這會幫助你。

+0

所以我嘗試了一下簡單的頁面刷新,看它是否至少保持了CheckBoxList的值相同,並沒有。便便。 – 2012-02-29 15:29:26

+0

您可以請檢查Checkboxlist屬性「EnableViewState」。它應該設置爲true。 – Sankalp 2012-02-29 15:31:55

+0

剛剛檢查過,它默認爲True。 – 2012-02-29 15:44:06