UpdatePanel の GridView に TemplateField と呼ばれるボタンがありますbtnDelete
。標準ではなく、OnClientClick="return confirm('Are you sure?')"
jQuery Dialog を使用したいと思います。
これまでのところ、btnDelete.Attributes["onclick"]
コード ビハインドで jQuery ダイアログ コードを使用および設定することで、jQuery を設定できました。ただし、「確認」または「キャンセル」をクリックする前に、すべての場合にサーバーにポストバックされます。
生成される HTML は次のとおりです。
<input type="submit" rel="Are you sure?" class="action-link delete" id="ctl00_c1_gvTransfers_ctl02_btnDelete" onclick="return function() {
$('#delete-transfer-confirm').dialog({
buttons: {
'Confirm' : function() { $(this).dialog('close'); return true; },
'Cancel' : function() { $(this).dialog('close'); return false; }
}
});
$('p.message').text($(this).attr('rel'));
$('#delete-transfer-confirm').dialog('open');
};" value="Delete" name="ctl00$c1$gvTransfers$ctl02$btnDelete">
どちらかのボタンがクリックされるまでこの関数がブロックされない原因は何ですか?
逆に、標準の確認は問題なく機能します。
<input type="submit" class="action-link delete" id="ctl00_c1_gvTransfers_ctl02_btnDelete" onclick="try{if (!window.confirm('Are you sure?')){return false;};}catch(e1){alert("Unexpected Error:\n\n" + e1.toString());return false;};" value="Delete" name="ctl00$c1$gvTransfers$ctl02$btnDelete">
ありがとう、マーク
アップデート:
最終的に、レンダリングする name="" 属性を取得するには、UseSubmitBehavior="false" を使用する必要がありました。次に、値を「return;」に設定して、OnClientClick をオーバーライドする必要がありました。したがって、デフォルトの __doPostBack() は実行されません。次に、Confirm で __doPostBack() を呼び出す .live() クリック ハンドラを接続することができました。
$('input.delete').live('click', function(e) {
var btnDelete = $(this);
alert($(btnDelete).attr('name'));
e.preventDefault();
$('#delete-transfer-confirm').dialog({
buttons: {
'Confirm': function() {
$(this).dialog('close');
__doPostBack($(btnDelete).attr('name'), '');
return true;
},
'Cancel': function() {
$(this).dialog('close');
return false;
}
}
});
$('p.message').text($(this).attr('rel'));
$('#delete-transfer-confirm').dialog('open');
});