使用javascript在母版页中获取嵌套面板控件的客户端ID

时间:2010-10-27 15:38:23

标签: javascript vb.net master-pages clientid

这是控制结构

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 个答案:

答案 0 :(得分:1)

要获得ExtendSession的客户ID,我认为您需要做的是:

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

<强>更新

如果你无法进入wizard1,那么可能这样:

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

我希望双引号可以正常使用,但如果没有帮助,我相信你可以切换它们。

答案 1 :(得分:0)

如果你添加

ClientIDMode="Static"

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

导致

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

asp.net不会破坏您的面板ID和

document.getelementbyid("ExtendSession")

将返回&lt; div&gt;的ID由asp:panel控件呈现。

答案 2 :(得分: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;
}