0

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

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

此外,我的 Button 在每次预加载后都会创建新的。我怎样才能给这个按钮一个固定的 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;
    }
}
4

6 回答 6

2

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

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

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

使用javascript将需要使用document.getElementsByClassName

于 2013-09-06T08:38:22.820 回答
2

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

  <script type="text/javascript">
    function disableBtn() 
    {
    document.getElementById("DivButton").disabled=true
    }
  </script>
于 2014-10-31T01:42:39.253 回答
1

根据您的评论

每个 Preload 都会调用我的 addbutton mathod(请参阅我的帖子)。每次按下按钮时都会有一个预加载

不要将按钮的创建Pre_Load放入Page_Load检查中IsPostBack

于 2013-09-06T09:06:20.597 回答
1

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

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则可以直接将其设置为启用 false,如下所示。

ButtonSave.Enabled = false;

代替

ActionButton b = (ActionButton)this.FindControl("ButtonSave");

b.启用=假;

于 2013-09-06T09:25:54.113 回答
1

您可以通过使用该属性ClientIDMode并将其设置为Static. 而且,您可以使用 JavaScript 访问控件,如下例所示:

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

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

于 2013-09-06T08:41:44.553 回答
1

我不确定“我的按钮是在每次预加载后创建的”或“我无法保存蒙版”是什么意思。

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

button.Enabled = false;

或者

button.Attributes.Add("disabled", "disabled");
于 2013-09-06T08:53:53.513 回答