У нас есть простой датагрид. В каждой строке есть флажок. Для флажка установлена автоматическая отправка, а в коде программной части есть обработчик событий для события checkbox check-changed. Это все работает как положено, ничего сложного.
Тем не менее, мы хотим отключить флажки, как только один из них будет отмечен, чтобы предотвратить двойную отправку, т. Е. Флажок установлен, все флажки отключены через javascript на стороне клиента, форма отправлена.
Для этого мы вводим некоторый код в событие onclick следующим образом (обратите внимание, что оповещение предназначено только для тестирования!):
Protected Sub DgAccounts_ItemCreated(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DgAccounts.ItemCreated
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim chk As CheckBox = CType(e.Item.FindControl("chkItemChecked"), CheckBox)
chk.Attributes.Add("onclick", "alert('fired ...');DisableAllDataGridCheckBoxes();")
End If
End Sub
При проверке источника отображаемой страницы мы получаем следующее:
<input id="DgAccounts__ctl2_chkItemChecked" type="checkbox" name="DgAccounts:_ctl2:chkItemChecked" onclick="alert('fired ...');DisableAllDataGridCheckBoxes();setTimeout('__doPostBack(\'DgAccounts$_ctl2$chkItemChecked\',\'\')', 0)" language="javascript" />
Все отображается в порядке, однако событие на стороне сервера не срабатывает — я полагаю, это связано с тем, что флажок отключен, как если бы мы просто оставили предупреждение и удалили вызов, чтобы отключить флажок, все работает нормально.
Могу ли я принудительно активировать событие check-changed, даже если флажок отключен?