1

私の問題は、テキストボックスの textchanged イベントでチェックボックスを動的に作成する必要があることです。これらはすべてチェックされ、チェックされた状態のカウントを int 変数に保持してラベルに割り当てます。ここまではすべて正常に完了しましたが、チェックボックスのいずれかをオフにすると問題が発生し、チェックボックスの数を1つ減らしたいのですが、checkchangedイベントが発生せず、チェックボックスのいずれかをオフにするとすべてが消えます...これが私のものですコード:

        if (DDLType.SelectedItem.Text == "Sick Leave")
            {


                DateTime f = DateTime.Parse(txtFrom.Text);
                DateTime t = DateTime.Parse(txtTo.Text);
                double daydiff = (t - f).TotalDays;

                double p = daydiff;
                for (int i = 1; i <= daydiff; i++)
                {
                    string a = f.ToString("ddd");
                    chklist = new CheckBox();
                    chklist.AutoPostBack = true;
                    chklist.CheckedChanged += new EventHandler(CheckChanged);

                    chklist.ID = "chk" + i;
                    chklist.Text = a;
                    chklist.Font.Name = "Trebuchet MS";
                    chklist.Font.Size = 9;
                    chklist.Checked = true;
                    checkcount++;
                    pnlCheck.Controls.Add(chklist);

                    if (a == "Thu" || a == "Fri")
                    {
                        p--;
                        chklist.Checked = false;
                        checkcount--;

                    }
                    f = f.AddDays(1);
                }
                daydiff = p;
                lblCheck.Text = checkcount.ToString();

}

      protected void CheckChanged(object sender, EventArgs e)
       {

        if (!chklist.Checked)
        {
            checkcount--;
            lblCheck.Text = checkcount.ToString();
        }
    }

私は何がうまくいかないのかわからない...

この点でどんな助けでも大歓迎です 事前に感謝します

4

2 に答える 2

1

イベントハンドラーを変更し、クリックされたチェックボックスのみをチェックする必要があります。

protected void CheckChanged(object sender, EventArgs e)
{
        chk = (CheckBox)sender
        if (!chk.Checked)
        {
            checkcount--;
            lblCheck.Text = checkcount.ToString();
        }
        else
        {
            checkcount++;
            lblCheck.Text = checkcount.ToString();
        }
}
于 2012-10-01T12:00:07.877 に答える
0
  1. これは、チェックボックスをオフにした後にポストバックを送信すると、テキスト変更イベントの後に行うように、残りのチェックボックスを動的に追加する必要があるためです。

  2. これを CheckChanged イベントに追加します: if句の前に chklist = (CheckBox)sender

于 2012-10-01T06:21:36.010 に答える