我在Asp.net應用GridView
控制,即有type="image"
和CommandName="Delete"
一個<asp:buttonField>
。的JavaScript:ButtonField字段單擊
有沒有辦法在達到OnRowDelete
事件之前執行一段javascript?
我想在刪除行之前進行簡單的確認。
謝謝!
編輯:請注意<asp:ButtonField>
標籤沒有的OnClientClick
屬性。
我在Asp.net應用GridView
控制,即有type="image"
和CommandName="Delete"
一個<asp:buttonField>
。的JavaScript:ButtonField字段單擊
有沒有辦法在達到OnRowDelete
事件之前執行一段javascript?
我想在刪除行之前進行簡單的確認。
謝謝!
編輯:請注意<asp:ButtonField>
標籤沒有的OnClientClick
屬性。
我會使用TemplateField來代替,並使用常規的asp:Button或asp:ImageButton填充ItemTemplate,具體取決於需要的內容。然後,您可以執行RowCommand事件在截獲Delete命令時要執行的相同邏輯。
在這兩個按鈕中,我會使用OnClientClick屬性在此之前執行JavaScript確認對話框。
<script type="text/javascript">
function confirmDelete()
{
return confirm("Are you sure you want to delete this?");
}
</script>
...
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="DeleteButton" runat="server"
ImageUrl="..." AlternateText="Delete" ToolTip="Delete"
CommandName="Delete" CommandArgument='<%# Eval("ID") %>'
OnClientClick="return confirmDelete();" />
</ItemTemplate>
</asp:TemplateField>
請示例代碼? – 2008-10-20 15:21:29
恰好有一個我現在打開的項目中有樣品。 – tvanfosson 2008-10-20 22:18:01
所以我有一個javascript函數:
function confirmDeleteContact() {
if (confirm("Are you sure you want to delete this contact?")) {
document.all.answer.value="yes";
} else {
document.all.answer.value="no";
}
}
和我它綁定到一個網格項,像這樣:
Sub dgbind(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgcontacts.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
CType(e.Item.Cells(9).Controls(0), System.Web.UI.WebControls.LinkButton).Attributes.Add("onclick", "javascript:confirmDeleteContact();")
End Select
End Sub
這是一些舊代碼,所以我看到幾個事情我可以改變,但道德是這樣的:如果一切都失敗了,在行綁定期間添加javascript「onClick」。 「document.all.answer.value」是一個隱藏字段,它具有runat=server
,以便我可以在回發時讀取值。
在GridView
的RowCreated
事件處理程序,使用FindControl
找到指定的按鈕,並添加到Attributes集合:
btn.Attributes.Add("onclick", "return confirm('delete this record?');");
如果確認()是真實的你的ASP.Net的代碼纔會執行,即一直ok'd。
我發現,最優雅的方式做,這是使用jQuery連線onClick事件:
<script type="text/javascript">
$(".deleteLink").click(function() {
return confirm('Are you sure you wish to delete this record?');
});
</script>
...
<asp:ButtonField ButtonType="Link" Text="Delete"
CommandName="Delete" ItemStyle-CssClass="deleteLink" />
請注意,我用一個任意CSS類標識鏈接按鈕。
你更好,如果你使用ButtonField字段......這是所有.NET框架始終可用,並且支持asp.net ..
這是你的選擇,如果ButtonField字段是附加參考System.Windows.Forms您最好的選擇.. 樣本:
using System.Windows.Forms;
protected void BorrowItem_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
if (System.Windows.Forms.MessageBox.Show("Do you want to delete", "Delete",MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification) != System.Windows.Forms.DialogResult.OK)
{
return;
}
}
//Continue execution...
}
//drimaster
我一直在設法從ButtonField字段繼承和的OnClientClick屬性添加到它。但由於某些原因,它不會執行實際的刪除操作。 – 2010-10-31 15:33:16