Reputation: 229
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
Upvotes: 1
Views: 7364
Reputation: 2214
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();
}
}
Upvotes: 1
Reputation: 2202
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
add this to your CheckChanged event: chklist = (CheckBox)sender before the if clause
Upvotes: 0