Получить clientID вложенного панели управления на главной странице, используя JavaScript - PullRequest
0 голосов
/ 27 октября 2010

Это управляющая структура

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);

Ответы [ 3 ]

1 голос
/ 27 октября 2010

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

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

обновлено

, если вы не можете добраться доwizard1, тогда, может быть, так:

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

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

0 голосов
/ 05 декабря 2010

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

Следующий код может быть одним из способов легко выполнить задачи.

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;
}
0 голосов
/ 27 октября 2010

Если вы добавите

ClientIDMode="Static"

к

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

, в результате *

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

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

document.getelementbyid("ExtendSession")

вернет идентификатор

, отображаемого элементом управления asp: panel.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...