2017-03-27 53 views
0

我有javascript顯示div內的消息。我傳入一個ID,這就是它知道在哪裏顯示消息。在同一頁面上出現兩次的用戶控件需要javascript的唯一div ID

這些div位於頁面上多次出現的用戶控件中。 該消息只顯示在第一個div(因爲它是第一個匹配的ID。作INamingContainer並不能幫助我這裏的JavaScript仍然掃描整個頁面,找到的第一個匹配的ID。

什麼是解決這個問題的最好辦法?我是否必須爲每個UserControl動態設置一個ID?有沒有一種方法,我可以擁有多個消息div,並且只需從後面的UserControl代碼啓用/禁用它們,以控制在每個UserControl中顯示哪些ID

Javascript

function ShowMessage(message, messagetype, id) { 
var cssclass; 
switch (messagetype) { 
    case 'Success': 
     cssclass = 'alert-success'; 
     break; 
    case 'Error': 
     cssclass = 'alert-danger'; 
     break; 
    case 'Warning': 
     cssclass = 'alert-warning'; 
     break; 
    default: 
     cssclass = 'alert-info'; 
} 
$(id) 
    .html('<div id="alert_div" style="margin: 0; -webkit-box-shadow: 3px 4px 6px #999;" class="alert fade in ' + cssclass + '"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>' + messagetype + '!</strong> <span>' + message + '</span></div>'); 

$(id) 
    .fadeTo(4000, 500) 
    .slideUp(800, 
     function() { 
      $(id).slideUp(500); 
     }); 

}

我的UC

<div class="col-xs-10"> 
          <div> 
           <div class="messagealert alert alert-small" id="spec_gv_alert"> 
           </div> 
          </div> 
         </div> 

以及如何JavaScript是從代碼中調用背後

 Protected Sub ShowMessage(message As string, messageType as string, alertId As string) 
     ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), 
              "ShowMessage('" + message + "','" + messageType + "','" + alertId + 
              "');", True) 
    End Sub 

回答

1

您可以使用面板服務器控制的範圍內。 ASP.Net確保所有服務器控件都有唯一的ID。

例如,

<asp:Panel runat="server" ID="Panel1" CssClass="messagealert alert alert-small"> 
</asp:Panel> 

渲染HTML

<div id="Panel1" class="messagealert alert alert-small"> 
</div> 
+0

怎樣獨特的面板ID傳遞給從後面的用戶控件代碼的JavaScript?因此,IF(IsStabilityTest)ShowMessage(「blah」,Error,PanelID)直到它生成後我纔會知道該ID,對吧? –

+1

我想是的。你能上傳相關的代碼嗎? – Win

+0

你需要哪部分?我認爲所有相關的代碼都在問題中。 –

相關問題