2010-10-27 4 views
0

Это структура управленияПолучить ClientId управления вложенной панели в MasterPage с помощью JavaScript

ContentPlaceHolder
    -> Мастер
            -> Панель

Я используя setTimeout для отображения панели через x минут.

Как получить идентификатор ClientID панели?

линия JavaScript требуется, это что-то вроде:

setTimeout(displayExtendSession('<%= ExtendSession.ClientID %>', 600000); 

ASPX

<asp:Content ID="Content1" runat="server" ...> 
    <asp:Wizard ID="wizard1" runat="server" ... > 
     <asp:Panel ID="ExtendSession" runat="server"> 
      <asp:Label ID="ExtendSessionLifePrompt" runat="server" Text="Your session is going to expire in 1 minute. Would you like to extend your Session?"></asp:Label> 
      <asp:Button ID="ExtendSessionLife" runat="server" Text="Yes" /> 
      <input type="button" id="CancelExtendSessionLife" value="No" onclick="HideExtendSession('<%= ExtendSession.ClientID %>'); return false;" /> 
     </asp:Panel> 
    </asp:Wizard> 
</asp:Content> 

Javascript

function HideExtendSession(msgBox) { 
    if (msgBox) 
     document.getElementById(msgBox).style.display = "none"; 
} 
function DisplayExtendSession(msgBox) { 
    if (msgBox) 
     document.getElementById(msgBox).style.display = "block"; 
} 

setTimeout(DisplayExtendSession('<%= ExtendSession.ClientID %>', 600000); 
setTimeout(HideExtendSession('<%= ExtendSession.ClientID %>', 720000); 
+1

И что не работает для вас с этим кодом? – Oded

+0

Какова ваша разметка? – lincolnk

+0

Согласитесь с Одедом, я думаю, что ваша проблема связана с интервалом, который составляет 10 минут, что является странным. –

ответ

1

Чтобы получить клиентский идентификатор ExtendSession Я думаю, что вам нужно сделать это:

setTimeout(displayExtendSession('<%= wizard1.FindControl("ExtendSession").ClientID %>', 600000); 

обновленный

если не можете добраться до wizard1, то, возможно, это:

setTimeout(displayExtendSession('<%= Content1.FindControl("wizard1").FindControl("ExtendSession").ClientID %>', 600000); 

я бы ожидать, что двойные кавычки, будет хорошо, но я уверен, что вы можете переключаться если это не поможет.

+0

Я получаю сообщение о том, что wizard1 не объявлен. Кстати, я думаю, вы также должны использовать двойные кавычки вне выражения и одинарные кавычки внутри. – 2010-10-27 16:12:59

0

Если добавить

ClientIDMode="Static" 

в

<asp:Panel ID="ExtendSession" runat="server"> 

в результате

<asp:Panel ID="ExtendSession" ClientIDMode="Static" runat="server"> 

asp.net не будет искажать идентификатор вашей панели и

document.getelementbyid("ExtendSession") 

вернет идентификатор <div>, предоставленный администратором asp: panel.

+0

К сожалению, я не запускаю asp.net 4, поэтому я не могу использовать использование ClientIDMode – 2010-10-27 16:18:10

0

Если вы не так много в производительности и все,

После код может быть одним из способов легко достичь поставленных задач.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write(FindRecursiveControl(this,"ExtendSessionLife").ClientID.ToString()); 
} 

Control FindRecursiveControl(Control cd, string Name) 
{ 
    if (cd.ID == Name && cd.ID !=null) 
     return cd; 

    foreach (Control c in cd.Controls) 
    { 
     Control cfind = FindRecursiveControl(c, Name); 

     if (cfind != null) 
      return cfind; 
    } 

    return null; 
} 
Смежные вопросы