web-dev-qa-db-ja.com

asp:ButtonFieldクリックの前のJavascript

Asp.netアプリケーションにGridViewコントロールがあり、<asp:buttonField> of type="image"およびCommandName="Delete"

OnRowDeleteイベントに到達する前にJavaScriptを実行する方法はありますか?

行を削除する前に、簡単な確認が必要です。

ありがとう!

[〜#〜] edit [〜#〜]<asp:ButtonField> tag ありませんOnClientClick属性。

25
Pablo Fernandez

代わりに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>
23
steve_c

これを行う最も洗練された方法は、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クラスを使用していることに注意してください。

15
Tod Birdsall

GridViewRowCreatedイベントハンドラーで、FindControlを使用して名前付きボタンを見つけ、Attributesコレクションに追加します。

btn.Attributes.Add("onclick", "return confirm('delete this record?');");

ASP.Netコードは、confirm()がtrueの場合、つまりOKの場合にのみ実行されます。

2
devio

だから私は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を持つ非表示フィールドです。

0
nathaniel