2013-10-28 65 views
0

如何防止添加兩個控件或列表?我試過這段代碼,但它不起作用... Pease help!如何防止在asp.net中添加兩個列表?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     ViewState["check"] = "First_Time"; 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (ViewState["check"] == "First_Time") 
    { 

     for (int i = 0; i < 6; i++) 
     { 
      CheckBoxList1.Items.Add(i.ToString()); 
     } 
     ViewState["check"] = "Scond_Time"; 
    } 
    else 
    { 
     Response.Write("Sorry, Can't create a list on second time"); 
    } 
} 
+1

請問您能否澄清您所問的內容?現在有點不清楚。 「防止添加兩個控件或列表」是什麼意思?你確定你正確使用'to'和'two'嗎? –

+0

你有做ViewState檢查的原因嗎? – logixologist

回答

1

與方法的問題是,按鈕點擊事件被觸發回發,因此在Page_Load回傳檢查是沒有意義的。

由於CheckBoxList.Items默認存儲在Viewstate(它實現了IStateManager),爲什麼不簡單地檢查是否已添加項目?

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (CheckBoxList1.Items.Count < 6) 
    { 
     CheckBoxList1.Items.Clear(); 
     for (int i = 0; i < 6; i++) 
     { 
      CheckBoxList1.Items.Add(i.ToString()); 
     } 
    } 
    else 
    { 
     // don't use Response.Write to output messages but controls 
     Response.Write("Sorry, Can't create a list on second time"); 
    } 
} 
+0

非常感謝Tim!我明白「您的方法存在的問題是按鈕單擊事件在回發時觸發,因此您在Page_Load中的回發檢查是毫無意義的」 但是,我該如何解決這一問題?因爲我想了解它在許多其他代碼中使用該概念...... – Lucy

+1

如上所示,根本不需要額外的Viewstate變量。所以我不明白這個問題。 –

相關問題