动态创建复选框checkedchanged事件问题

时间:2020-12-27 20:12:30

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:

我的问题是我需要在文本框的textchanged事件上动态创建复选框,这些事件都被检查并将其检查状态计数保存在一个int变量中,并将其分配给标签;直到这里所有成功完成但问题是现在如果我取消选中任何复选框我希望他们的计数减少一个但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();
        }
    }

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

我不知道出了什么问题......

Any help in this regard will highly appreciated Thanks in advance

在这方面的任何帮助将非常感谢提前感谢

2 个解决方案

#1


0  

  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

    将此添加到CheckChanged事件:if子句之前的chklist =(CheckBox)发送方

#2


0  

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

您需要更改事件处理程序并仅检查cliked复选框。

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


0  

  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

    将此添加到CheckChanged事件:if子句之前的chklist =(CheckBox)发送方

#2


0  

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

您需要更改事件处理程序并仅检查cliked复选框。

protected void CheckChanged(object sender, EventArgs e)
{
        chk = (CheckBox)sender
        if (!chk.Checked)
        {
            checkcount--;
            lblCheck.Text = checkcount.ToString();
        }
        else
        {
            checkcount++;
            lblCheck.Text = checkcount.ToString();
        }
}

相关文章