我们有一个简单的数据网格。每一行都有一个复选框。该复选框设置为autopostback,并且代码隐藏具有复选框检查更改事件的事件处理程序。这一切都按预期工作,没有什么复杂的。帮助DataGrid/CheckBoxes /双提交
但是,我们希望在检查一个选项以禁止双重提交,即复选框选中时禁用复选框,所有复选框都将通过客户端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" />
这一切都出现在顺序,但是服务器端事件不火 - 我相信这是由于该复选框被禁用,因为如果我们只是留在警报和解除呼叫保留禁用复选框它一切正常。
即使复选框被禁用,我是否可以强制启用检查更改事件?
嗨安迪 - 是的复选框被选中也需要被禁用。 – 2009-02-10 19:35:01