2009-10-17 151 views
2

我有約150頁的保存按鈕。當用戶點擊保存按鈕時,我應該在點擊後禁用按鈕。這樣用戶不會再次點擊保存按鈕。點擊後禁用按鈕功能

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // right now once the user clicks the save button 
     Button1.Enabled = "false" 

    } 

現在我正在這樣做。有沒有更好的解決方案可以讓我在這裏改進編碼會很棒。

謝謝

+0

您認爲目前的解決方案有什麼問題? – pmarflee 2009-10-17 19:02:53

回答

2

您也可以嘗試通過Javascript禁用它。

0

你需要做的是使用一些JavaScript,並在客戶端單擊時禁用它。

點擊事件在回發時觸發。

1

在允許頁面繼續回發之前,您需要使用JavaScript來修改鏈接,以防止將來點擊處理。一個天真的嘗試是,

<asp:LinkButton runat="server" id="button" OnClientClick="this.href='#'"> 
    Click - doesn't quite work 
</asp> 

這成功地避免連續點擊觸發從回發,但它也可以防止第一次點擊從觸發回發。需要多一點邏輯才能使其正常工作。在代碼隱藏中,我抓取了實際的回發JavaScript代碼片段並將其用於某些邏輯。

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    button1.OnClientClick = string.Format(
     "if(this.getAttribute('disabled')) return false; {0}; this.setAttribute('disabled','disabled'); return false;", 
     Page.ClientScript.GetPostBackEventReference(button1, null)); 
} 

在HTML模板:

<asp:LinkButton runat="server" id="button" > 
    Click - does not allow multiple postbacks 
</asp> 

你可以用一些CSS美化這個了,在這一點上我會建議包括jQuery的,所以你的代碼更簡潔(由於其命令鏈接)。

3

我認爲最好的選擇是使用javascript。如果您使用的是jQuery(我甚至可以開始推薦),那麼您可以將JavaScript放在您的母版頁中。你只需要找到一種方法來爲你的保存按鈕創建一個選擇器。就像這樣:

$(document).ready(function(){ 
     $('.saveButton').bind("click", function(e) { 
       $(this).attr("disabled", "true"); 
      return true; //causes the client side script to run. 
     }); 
    }); 

在這個例子中,我認爲所有的保存按鈕將有CSS類「.saveButton」,但你可以找到你自己的方式來選擇按鈕。

乾杯!

+0

@Gus:如果您發佈的代碼與您的jQuery代碼片段相同,請確保突出顯示這些代碼行,然後單擊編輯器工具欄上的「代碼」按鈕(010 101)或在鍵盤上按Ctrl-K以整齊地將其格式化爲代碼。然後,只有這樣才能突出語法和全部。 – 2009-10-17 21:19:30

+0

嗨Gus, 感謝您的重播,如果我在母版頁上使用上面的代碼。 intally按鈕的點擊過程中應該得到的前 嘗試 {公共無效保存功能(){ // 這裏所有的保存按鈕應被禁用 } 趕上(例外五){ 扔 Ë; } 終於 {// 這裏我保存按鈕應該啓用 //最後我保存按鈕應該得到使這裏 }} – happysmile 2009-10-26 09:12:28

+0

@marc_s何時該按鈕保持原來的狀態(即)使能狀態.. – 2010-09-04 11:33:24

0

連接的javascript禁用按鈕後,用戶點擊將是最簡單的方法這個(在頁面onLoad事件):

myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";"); 

但如果按鈕被重複的許多頁面上,你也許可以創建嵌套母版頁將保存按鈕放在那裏,或者從實現此禁用功能的類繼承頁面。此外,您可以「掃描」您想要在點擊後禁用的控件!