简体   繁体   中英

Dynamically created checkbox checkedchanged event issue

My issue is that i need to create checkboxes dynamically on a textchanged event of a textbox which are all checked and keeping their checked state count in an int variable assiging it to a label; till here all is successfully done but the problem is now if i uncheck any of the checkboxes i want their count to get decreased by one but the checkchanged event is not firing and by unchecking any of the checkboxes all are gone... here is my code:

        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();
        }
    }

I don't know what is going wrong...

Any help in this regard will highly appreciated Thanks in advance

You need to make changes to your event handler and check cliked checkbox only.

protected void CheckChanged(object sender, EventArgs e)
{
        chk = (CheckBox)sender
        if (!chk.Checked)
        {
            checkcount--;
            lblCheck.Text = checkcount.ToString();
        }
        else
        {
            checkcount++;
            lblCheck.Text = checkcount.ToString();
        }
}
  1. This is because when you send the postback after unchecking a checkbox the remaining checkboxes needs to add dynamically, like you do after the text change event

  2. add this to your CheckChanged event: chklist = (CheckBox)sender before the if clause

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM