このコードを持っています:
<asp:UpdatePanel ID="id">
<asp:CommandField ButtonType="Image" InsertImageUrl="url/here" ShowInsertImage="true" ValidationGroup="valGr" />
</asp:UpdatePanel>
C# コードでこのボタンをダブルクリックしないようにする方法。
このコードを持っています:
<asp:UpdatePanel ID="id">
<asp:CommandField ButtonType="Image" InsertImageUrl="url/here" ShowInsertImage="true" ValidationGroup="valGr" />
</asp:UpdatePanel>
C# コードでこのボタンをダブルクリックしないようにする方法。
最初に送信を保持するフラグを作成し、それをフォームに追加できます。次に、UpdatePanel が更新され、返されるのを待っているときに、そのフラグを開いたり閉じたりします。
たとえば、このコードは、次の場合にのみフォーム (および UpdatePanel) の送信を許可し
fAlloToSubmit
ますtrue
。
<script>
var fAlloToSubmit = true;
function AllowFormToRun()
{
if(!fAlloToSubmit)
alert("Please wait for the page to fully re-loaded.");
return fAlloToSubmit;
}
</script>
背後にあるコードで、それをフォームに設定します。
protected void Page_Load(object sender, EventArgs e)
{
Page.Form.Attributes["onsubmit"] = "return AllowFormToRun();";
}
そして、UpdatePanel の場合、更新を開始した瞬間、たとえば次のようにそのコマンドをクリックした瞬間にそのフラグを開きます。
<script>
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args) {
// here is run when you click the command on the UpdatePanel
fAlloToSubmit = false;
}
function EndRequest(sender, args) {
// here is come after the upadate of the command
fAlloToSubmit = true;
}
</script>
ここでの秘訣は、フォームを保持して送信し、ページ上のすべてのコントロールを調べて無効にすることではありません。