在 DataGrid 中實現刪除前確認,可採用客戶端 JavaScript 攔截或伺服器端動態註冊 onclick 屬性兩種方式。
<script language="JavaScript">
function delete_confirm(e) {
if (event.srcElement.outerText == "刪除" || event.srcElement.name == "btnDictDel")
event.returnValue = confirm("該操作將永久刪除,確定刪除?");
}
document.onclick = delete_confirm;
</script>
DataGrid 超連結按鈕列文本設為「刪除」即可自動生效。
for (int i = 0; i < myCount; i++)
{
((ImageButton)dataGrid.Items[i].FindControl("del"))
.Attributes.Add("onclick", "return confirm('該操作將永久刪除,確定刪除?');");
}
在 ItemDataBound 或 DataBound 事件中執行更穩妥。
| 維度 | 方法一 | 方法二 |
|---|---|---|
| 適用控件 | 超連結按鈕列 (文本固定) | 任意按鈕控件 (ImageButton, LinkButton, Button) |
| 維護性 | 頁面內嵌腳本,耦合文本 | 代碼後置,類型安全,支援多語系 |
| 效能 | 全域 click 事件,微小開銷 | 僅目標控件註冊,零額外監聽 |
推薦方法二:符合關注點分離、易於單元測試、支援區域化字串資源。現代專案建議改用 GridView + OnClientClick 或 jQuery/JS 模組化綁定。