我有一个按钮的onclick事件。 一旦这个事件被ftonired我想要禁用该按钮。 谁能帮我理解怎么做?

这是我在buttonclick事件上执行的代码。

protected void Button3_Click(object sender, EventArgs e)
{

    if (Session["login"] != null && Session["db"] != null)
    {

        digit b = new digit();
        String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2);

        chekcount c = new chekcount();
        int count = c.getmaxcountforjud_no(digitformed);
        int addtocount = count + 1;

        String name = Session["login"].ToString();
        String databs = Session["db"].ToString();
        String complex_name = name + databs;

        if (DropDownList2.SelectedItem.Text != "New")
        {
            update u = new update();
            u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2);
            Response.Write(@"<script language='javascript'>alert('Updated')</script>");

        }
        else
        {
            save d = new save();
            d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name);
            Response.Write(@"<script language='javascript'>alert('Saved')</script>");

        }
    }
    else
    {
        Response.Redirect("log.aspx");
    }
}

这是我要禁用的按钮。

<asp:Button ID="Button3" runat="server" Text="Save" onclick="Button3_Click" 
                    Visible="False" />

===============>>#1 票数:29

使用按钮控件的OnClientClick和UseSubmitBehavior属性。

<asp:Button runat="server" ID="BtnSubmit" 
  OnClientClick="this.disabled = true; this.value = 'Submit in progress...';" 
  UseSubmitBehavior="false" 
  OnClick="BtnSubmit_Click" 
  Text="Click to Submit" />

OnClientClick允许您添加客户端OnClick脚本。 在这种情况下,JavaScript将禁用button元素并将其文本值更改为progress消息。 回发完成后,新呈现的页面将使按钮恢复其初始状态,而无需任何额外的工作。

在客户端禁用提交按钮带来的一个缺陷是它将取消浏览器的提交,从而取消回发。 将UseSubmitBehavior属性设置为false会使.NET注入必要的客户端脚本以终止回发,而不是依赖于浏览器的表单提交行为。 在这种情况下,它注入的代码将是:

__doPostBack('BtnSubmit','')

Redered HTML:

<input type="button" name="BtnSubmit" 
  onclick="this.disabled = true; this.value = 'Submitting...';__doPostBack('BtnSubmit','')"
  value="Submit Me!" id="BtnSubmit" />

这应该给你想要的行为。

来自: http ://encosia.com/disable-a-button-control-during-postback/图片来源:Dave Ward(Twitter:@Encosia)

===============>>#2 票数:15 已采纳

你有没有尝试过?:

protected void Button3_Click(object sender, EventArgs e)
{
   Button3.Enabled = false;
   //rest of code
}

===============>>#3 票数:5

<asp:Button  onclick="Button3_Click" ID="Button3" runat="server" Text="Save"
OnClientClick="this.disabled = true; this.value = 'please wait ..';" 
UseSubmitBehavior="false"     />

===============>>#4 票数:5

您需要在服务器端代码中设置按钮的Enabled属性,如其他海报所详述。 但是,如果您尝试阻止来自同一按钮的多个提交,则需要稍微不同的方法。

向您的班级添加方法:

static void DisableButtonDuringPostback(Page page, Button control)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("this.disabled = true;");
    sb.Append(page.ClientScript.GetPostBackEventReference(control, control.ID.ToString()));
    sb.Append(";");

    control.Attributes.Add("onclick", sb.ToString());

}

在Page_Load中添加

DisableButtonDuringPostback(this.Page, Button3);

===============>>#5 票数:2

查看标记的代码

protected void Button3_Click(object sender, EventArgs e)
{

    ** if (Session["Clicked"] == null)
        Session["Clicked"] = true;
    else
    {
        Button3.Enabled = false;
        return;
    } **


    if (Session["login"] != null && Session["db"] != null)
    {

        digit b = new digit();
        String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2);

        chekcount c = new chekcount();
        int count = c.getmaxcountforjud_no(digitformed);
        int addtocount = count + 1;

        String name = Session["login"].ToString();
        String databs = Session["db"].ToString();
        String complex_name = name + databs;

        if (DropDownList2.SelectedItem.Text != "New")
        {
            update u = new update();
            u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2);
            Response.Write(@"<script language='javascript'>alert('Updated')</script>");

        }
        else
        {
            save d = new save();
            d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name);
            Response.Write(@"<script language='javascript'>alert('Saved')</script>");

        }
    }
    else
    {
        Response.Redirect("log.aspx");
    }
}

===============>>#6 票数:2

   ///count number of button click
    var counter = 0;
    function countclickbutton() {
        counter++;
        if (counter > 1) {
            alert("proessing..please wait.");
//do not allow to again click
            return false;
        }
        else {

            return true;
        }
    }

在onClientClick按钮上调用此方法

===============>>#7 票数:1

如果你想通过使用jquery来做到这一点

$('#button3').attr("disabled", true); 

===============>>#8 票数:0

这是一个老帖子,但我认为它没有得到完全回答。

首先,在ASP.NET WebForms中,您向Web服务器提交HTTP GET请求,该Web服务器处理您的请求并输出客户端HTML代码以供浏览器呈现。

在与服务器端控件交互时,值包含在属性的隐藏VIEWSTATE输入字段中(例如, Enabled的布尔值)。

单击按钮时,它会在同一页面上向Web服务器发送HTTP POST请求。 这就是单击按钮时触发Page_Load事件的原因。

一旦处理了HTTP POST请求,它将返回HTML代码以供浏览器重新呈现。 因此,如果您的Page_Load事件中包含以下代码:

if (Page.IsPostBack) { Button3.Enabled = false; }

在处理HTTP POST请求并返回更新的客户端代码之前,它不会向用户显示已被禁用。

从最初的问题来看,似乎服务器需要几秒钟才能返回响应,因此在反复单击按钮时可能会触发多个回发事件。

解决问题的一种简单(但令人烦恼)的方法是使用常规HTML button在JavaScript中执行一个function ,该function禁用它并触发服务器端控件的onclick事件。 这样的问题是,当HTTP POST请求返回响应时,它会将常规HTML button呈现为启用。 要解决此问题,您可以使用内联ASP.NET代码在JavaScript中禁用它。 这是一个例子:

.ASPX文件

<button id="clientButton" onclick="javascript:update();" />
<asp:Button ID="serverButton" OnClick="serverButton_OnClick" runat="server" />
<script type="text/javascript">
<% if (Page.IsPostBack) { %>
document.getElementById("clientButton").enabled = false;
<% } %>
function update() {
    document.getElementById("clientButton").enabled = false;
    document.getElementById("<%= serverButton.ClientID %>").click();
}
</script>
<style type="text/css">
#<%= serverButton.ClientID %> {
    visibility: hidden;
    display: none;
}
</style>



.ASPX.CS文件

protected void Page_Load(object sender, EventArgs e) 
{
    if (Page.IsPostBack) 
    {
        // Triggered when serverButton has 'javascript:click()' triggered
    }
}

===============>>#9 票数:0

对于WPF应用程序

Button1.IsEnabled = false;  // Replace Button1 with your button name, false disables button

  ask by Ishan translate from so

未解决问题?本站智能推荐:

1回复

新集成后,按钮单击事件停止

我一直在为ASP.Net(C#)实施DPS(http://sec.paymentexpress.com/technical_resources/ecommerce_hosted/pxpay.html)示例代码,以为我的公司创建一个支付网关。 我可以正常运行,可以将请求发送到Payment Ex
2回复

单击按钮后如何使文本从页面不可见

我正在开发一个网页,我想在其中单击按钮后使文本变得不可见,并使gridview可见。 在页面中,我也有文本框和按钮,但是可以通过使用“ textbox.visible = false”和“ button.visible = false”使这些内容不可见,但是我不理解如何使文本不可见。 页面的
1回复

首次单击时未触发按钮单击事件

我有一个项目,该事件需要在首次点击时触发,但是该事件在第一次点击时不会触发,它在第二次点击时触发,但是在第一次点击回发时会发生,但事件不会触发 按钮单击事件的cs代码
1回复

checkbox_checkedchange和按钮单击事件的帮助

基本上我有几个复选框。 如果复选框1被选中,我将为变量分配一个字符串。 因此,我将使每个复选框都有自己的字符串,这些字符串将保存到文本文件中。 仅当单击按钮时,这些字符串才会保存到文本文件中。 我这样做: 我想我需要在按钮上单击添加if else语句..在此先感谢
1回复

每行Gridview上的“启用/禁用”按钮

我有一个GridView在每一Row中都有一个Like和Dislike Button 。 我要做的是使用户只能click每Row一个Button并且clicked该特定Button时,每row只能Enable或Disable该Button 。 我有一个Sql Table tblVot
3回复

javascript按钮单击和asp.net按钮单击

我想单击一个按钮(ASP.net)-需要运行JS方法,如果它为true,则它必须调用ASP.Net-即,我拥有一个表单,并且其validated(JS返回true )在客户端-那么只有我的asp.net按钮-click事件必须触发。 这个怎么做?
4回复

在Gridview中签入,单击按钮为文本框分配值

我尝试完成按钮单击的操作,以实现gridview中的选中行,以下是我的asp.net代码 如果单击“编辑”按钮,我想将gridview行,列值分配到其文本框中..怎么用代码解释? C# } 这里使用Empid是主要的,另外2个是其他列..,但不能正确执行
1回复

按钮单击事件在转发器控件中不起作用

我正在一个项目中使用中继器控件,并且在其项目数据绑定事件中添加了一些数据和两个按钮-编辑和删除。但是我的按钮的单击事件不起作用,当我单击这两个按钮中的任何一个时按钮,我的中继器数据消失了。 以下是我的代码 ASPX页面代码 单击按钮之前的屏幕截图 单击按钮后的屏幕截
3回复

在C#,Visual Studio 2013中的按钮单击上打开新的网页

我正在使用Microsoft Visual Studio Ultimate 2013并在C#中进行编码。 我希望在单击按钮时打开一个新的网页RegistrationForm.aspx(应用程序中包含的网页)。 我在互联网上进行了很多搜索,但没有发现任何有用的信息。 这是我的按钮。
1回复

Godaddy未检测到按钮单击事件错误CS1601

在GoDaddy中未检测到某些Button单击事件。 这是代码 这是我的后端代码