簡體   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