2011-12-24 9 views
1

だから私はC#でASP.Netでプログラミングを始めています。私は非常に簡単な手順を試していますが、それは非常にバグです。だから私は、次のASPコードを持っている:C#のASP.Netチェックボックス

<asp:Button ID="Button1" runat="server" Text="Show Numbers" onclick="Button1_Click1" /> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:CheckBox ID="CheckBox1" runat="server" 
      oncheckedchanged="CheckBox1_CheckedChanged" /> 

私はそれの後ろに、次のC#のコードがあります:コードの目的は、画面上のチェックボックスを持つことです

int i = 0; 
    List<int> Chosen = new List<int>(); 

    public void Page_Load(object sender, EventArgs e) 
    { 


    } 
    public void Button1_Click1(object sender, EventArgs e) 
    { 
     if (i == 0) 
     { 
      TextBox1.Text = "Nothing here!"; 
     } 
     else if (i == 1) 
     { 
      TextBox1.Text = Chosen[0].ToString(); 
     } 
    } 
    protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (CheckBox1.Checked == true) 
     { 
      Chosen.Add(1); 
      i++; 
      CheckBox1.Checked = true; 
     } 
     else if (CheckBox1.Checked == false) 
     { 
      Chosen.Remove(1); 
      i--; 
      CheckBox1.Checked = false; 
     } 
    } 

を。それがチェックされている場合は、私のリスト(Chosen)に番号1を追加したいのですが、ボタンを押すと、テキストボックスに番号1が表示されます。チェックボックスがオフになっていると、番号がリストから削除されます。ボタンを押すと「ここには何もない」と表示されます。

問題は、時にはうまく機能しないことがあります。たとえば、ボックスをクリックすると、ボタンが機能します。そして、ボタンをもう一度クリックすると、「ここには何もありません」と表示されます。

答えて

4

CheckBoxコントロールのマークアップにAutoPostBack=trueを設定し、そのリストをSession dictinaryに保存する必要があります。

List<int> Chosen; 

public void Page_Load(object sender, EventArgs e) 
{ 
    if(Sesstion["Chosen"]==null) 
    { 
     Session["Chosen"]=new List<int>(); 
    } 
    Chosen = (List<int>)Session["Chosen"]; 
} 
+1

ご迷惑をおかけしました。忙しかった。ありがとうございました! –

関連する問題