繁体   English   中英

如何在ASP.Net中禁用按钮

[英]How to disable a Button in ASP.Net

我在禁用ASP.net中的按钮时遇到了很大的问题。 当我禁用客户端上的按钮时,回发后将启用该按钮。 当我禁用服务器端的按钮时,由于按钮不存在,我无法保存掩码。

我该如何解决? 保存操作在第一个Preload / PostBack上执行。 这意味着第二个PostBack及其之后的所有内容都不应执行保存过程。

此外,我的按钮在每次预加载后都会被创建。 我如何给这个按钮一个固定的ID,以便它始终是我要覆盖的同一对象,并且我必须访问该对象。

在.cs中:

    private void AddSaveButton()
    {
        ActionButton b = new ActionButton(GetString(6025));
        b.ID = "ButtonSave";
        b.ClientInstanceName = "ButtonSave";
        b.UseSubmitBehavior = true;
        b.Click += new EventHandler(save_event);
        DivButton.Controls.Add(b);
    }

在aspx中:

 <div runat="server" id="DivButton" style="margin-top: 10px; padding-bottom: 15px; float: left">

动作按钮:

public class ActionButton : DevExpress.Web.ASPxEditors.ASPxButton
{
    public ActionButton(string text)
    {
        this.Text = text;
        this.CssClass = "actionButton";
        this.CssPostfix = "actionButton";
        this.AllowFocus = false;
        this.UseSubmitBehavior = false;
        this.CausesValidation = true;
    }
}

您可以在每次创建按钮时为它分配一个css-class

这样做,您可以使用jQuery执行以下操作

 $('.className').attr("disabled", true);

使用javascript将需要使用document.getElementsByClassName

您可以简单地使用javascript禁用按钮。

  <script type="text/javascript">
    function disableBtn() 
    {
    document.getElementById("DivButton").disabled=true
    }
  </script>

您可以使用属性ClientIDMode并将其设置为Static来获取固定ID。 而且,您可以使用JavaScript来访问控件,如以下示例所示:

<script type="text/javascript">
  function DoSomething() {
    alert('<%= Control.ClientID %>');
  }
</script>

更多信息: http : //www.codeproject.com/Articles/34151/ASP-NET-4-0-Client-ID-Feature

我不确定“我的按钮是在每次预加载后创建的”还是“我无法保存遮罩”的意思。

如果要影响回发时的启用状态,可以执行以下任一操作:

button.Enabled = false;

要么

button.Attributes.Add("disabled", "disabled");

根据您的评论

每个Preload都会调用我的addbutton方法(请参阅我的文章)。 每次按下按钮都会有一个预加载

不要将按钮的Pre_Load放在Pre_Load中,而Pre_Load检查IsPostBack放在Page_Load

如果要从.cs文件中添加按钮,并且不能将按钮放在.aspx文件中,则可以在Page_Init事件中添加按钮,如下所示。

protected void Page_Init(Object sender, EventArgs e)
{
    AddSaveButton();
}

Page_Init添加按钮将使其在每次回发期间保持其State

按原样添加保存按钮的方法...

private void AddSaveButton()
{
    ActionButton b = new ActionButton(GetString(6025));
    b.ID = "ButtonSave";
    b.ClientInstanceName = "ButtonSave";
    b.UseSubmitBehavior = true;
    b.Click += new EventHandler(save_event);
    DivButton.Controls.Add(b);
}

现在,您可以从页面的save_event中找到该按钮,并按如下所示禁用它...

protected void save_event(Object sender, EventArgs e)
{
    ActionButton b = (ActionButton)this.FindControl("ButtonSave");
    b.Enabled = false;
    //do your saving stuff here...
}

此后,每次回发将禁用按钮。

编辑:

好吧,如果要从.aspx添加此按钮,则可以将其直接设置为enabled false,如下所示。

ButtonSave.Enabled = false;

代替

ActionButton b =(ActionButton)this.FindControl(“ ButtonSave”);

b.Enabled =假;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM