Clicking checkbox causes onCheckedChanged to fire twice

依然范特西╮ 提交于 2019-12-07 01:00:32

Do you set the checked status of the checkbox to false at all in your page load event?

There could be several reasons for such behavior. In my case it was that the event was being registered twice: one time automatically as a part of the checkbox definition
<asp:CheckBox ID="CheckBox1" runat="server" **OnCheckedChanged="ChangeReadFlag"** AutoPostBack="true" Checked='<%# (string)DataBinder.Eval(Container.DataItem, "READ_FLAG") == "1" %>' Enabled='<%# isSelectedRow(Container) %>' />

and the second time - an explicit registration somewhere in code, usually in OnInit method:
CheckBox1.CheckedChanged += new EventHandler(ChangeReadFlag);

In order to fix it, you should remove the second registration either from the code behind or from your control.

You want to capture the even of the GridView; identify the command (sender) that is causing the postback, and then you can execute your DB update.

One of the reasons(there may be others) the problem comes is the event is registered twice.

Check your Code in the code behind, inside "InitializeComponent". This will cause the event to be registered twice and hence fire twice.

You need to remove it at one place to solve the issue.

rAm.

Another potential problem is where your databinding is happening - I don't see a DataSource in your code-in-front, so I guess you're databinding in the code-behind.

If you are doing the databind on postback, and after the first onChange event has fired, it's quite likely that the databind event is reseting the checkbox's status, and so causing the event to fire again.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!