2010-12-15 74 views
3

我有一個JavaScript MessageBox,當我點擊Repeater中的事件或刷新當前頁面時,它會一直顯示。ASP C#| MessageBox保持顯示

下面是函數:

public myFunctions() 
{ 

} 
/** Display Successs/Error Message **/ 
public void DisplayUserMessage(string messageType, string messageString, Label ErrorMessageLabel) 
{ 
    ErrorMessageLabel.Visible = true; 
    ErrorMessageLabel.Text = "<b>" + messageType.Substring(0, 1).ToUpper() + messageType.Substring(1).ToLower() + ":</b> " + messageString; 
    ErrorMessageLabel.CssClass = messageType.ToLower() + "_message"; 
} 
public void HideUserMessage(Label ErrorMessageLabel) 
{ 
    ErrorMessageLabel.Visible = false; 
    ErrorMessageLabel.Text = ""; 
    ErrorMessageLabel.CssClass = ""; 
} 

這裏是jquery的使其淡出:

$(document).ready(function() { 
/** Success/Error Messages **/ 
$('.success_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow'); 
$('.error_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow'); 

});

這是在母版:

<!-- Message Box --> 
<div id="msgBox" runat="server"> 
     <asp:Label ID="ErrorMessageLabel" CssClass="" runat="server" Visible="false"></asp:Label> 
</div> 

這裏是代碼隱藏腳本時成功時:

Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel"); 
new myFunctions().DisplayUserMessage("success", "Administrator Updated!", ErrorMessageLabel); 

任何人都知道我可以從連續不斷地出現,阻止它我點擊另一個按鈕或刷新頁面後?

回答

0
if(IsPostBack) 
     new myFunctions().HideUserMessage(ErrorMessageLabel); 

這工作。謝謝@Harie

1

使用隱藏輸入並設置調用成功函數時的值。所有其他時間重置該值。在你的文檔就緒函數中檢查隱藏元素的值,然後調用animate函數。

<input id="txtHidSuccess" type="hidden" runat="server" /> 

在頁面加載

txtHidSuccess.Value = "0"; 

在成功/誤差函數

txtHidSuccess.Value = "1"; 

jQuery的

$(function(){ 
    if ($("#txtHidSuccess").val() === "1") { 
     /** Success/Error Messages **/ 
     $('.success_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow'); 
     $('.error_message').animate({ opacity: 1.0 }, 2000).fadeOut('slow');  
    } 
}); 
+1

請使用Page_Load函數中的代碼If(!postback){ErrorMessageLabel.Text =「」;}並嘗試使用 – kbvishnu 2010-12-15 04:10:54

+0

@Harie。我創造了答案! – balexander 2010-12-15 23:38:53

0

我看到你打電話DisplayUserMessage(),但不是HideUserMessage()。我的猜測是,當您設置ErrorMessageLabel屬性時,它們存儲在視圖狀態持久性回傳中。

而不是使用ASP.NET Label控件,你可以試着用普通的div來包裝一些文本,然後用CSS來隱藏它。當您的應用中發生成功事件時,您可以使用ClientScriptManager.RegisterStartupScript()將腳本寫入顯示div的客戶端。然後,如果可見,您的動畫函數可以淡出div。