开发者

disable button in ascx page prior to postback

How do I disable a button in an ascx page? I know how to do it on an aspx page with:

btnSave.Attributes.Add("onclick", 
  "this.disabled=true;this.value='Please Wait...';needToConfirm=false;" +
  Cl开发者_StackOverflow社区ientScript.GetPostBackEventReference(btnSave, "").ToString());

But the ClientScript function is not present in the ascx page.


You don't need the ClientScript in code behind, you can also have it directly in the button tag as OnClientClick attribute:

<asp:Button id="btnSave" runat="server" OnClientClick="this.disabled=true; this.value='Please Wait...'; needToConfirm=false;" Text="Save" />


You can access the ClientScript property using Page.ClientScript from your user control (ascx).


you can access ClientScript through the Page property of your control

Page.ClientScript.GetPostBackEventReference(btnSave, "")


Did you try: Page.ClientScript.GetPostBackEventReference?


Here's how I fixed the problem. In every page, I have three divs:

<div align="center" id="divWait" style="display:none"><asp:Label ID="lblSaveorCancel" runat="server"></asp:Label></div>

<div style="display:block" id="divMain">

----  page actual content here  ------

</divMain>

<div id="divBut" style="text-align:center;display:block">
<asp:button id="SaveBtn" runat="server" CssClass="button" Text="Save" OnClientClick="return Validate('save');"/>
<asp:button id="CancelBtn" runat="server" CssClass="button" Text="Cancel" OnClientClick="return ShowWaitDiv('cancel');"/>
</div>

And then I added scripts:

function Validate(saveorcancel) {

-----  validation checks for data on the page  ------

}

function ShowWaitDiv(saveorcancel) {
    var div = document.getElementById(divWait.id);
    div.style.display = "block";
    var div1 = document.getElementById(divMain.id);
    div1.style.display = "none";
    var div2 = document.getElementById(divBut.id);
    div2.style.display = "none";
    if (saveorcancel == 'save') {
        document.getElementById('<%= lblSaveorCancel.ClientID %>').innerHTML = 'Saving data, please wait...';
    }
    else {
        document.getElementById('<%= lblSaveorCancel.ClientID %>').innerHTML = 'Redirecting, please wait...';
    }
    return true;
}

Simple, quick, and the user sees the result of clicking a button immediately and cannot click any buttons again.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜