GridView
Asp.net アプリケーションにコントロールがあり、<asp:buttonField>
oftype="image"
とCommandName="Delete"
.
OnRowDelete
イベントに到達する前にJavaScriptを実行する方法はありますか?
行を削除する前に簡単な確認が必要です。
ありがとう!
編集<asp:ButtonField>
:タグには属性がないことに注意してください。OnClientClick
GridView
Asp.net アプリケーションにコントロールがあり、<asp:buttonField>
oftype="image"
とCommandName="Delete"
.
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>
これを行う最も洗練された方法は、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クラスを使用していることに注意してください。
のイベント ハンドラーで、 を使用GridView
して名前付きボタンを検索し、Attributes コレクションに追加します。RowCreated
FindControl
btn.Attributes.Add("onclick", "return confirm('delete this record?');");
ASP.Net コードは、confirm() が true の場合、つまり OK されている場合にのみ実行されます。
だから私は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
ポストバック時に値を読み取ることができるようにする隠しフィールドです。
ボタンフィールドを使用する場合は、参照 System.Windows.Forms を追加することをお勧めします...すべての .net フレームワークで常に利用可能で、asp.net をサポートしています。
ボタンフィールドが最良の選択である場合、これはあなたの選択です..サンプル:
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