我們有一個簡單的數據網格。每一行都有一個複選框。該複選框設置爲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