Вопрос по asp.net, c# – Доступ к элементу управления главной страницы в файле ascx

2

У меня есть файл главной страницы, который содержит 2 меню в 2 панели управления. Я также использую элемент управления, чтобы проверить, вошел ли пользователь в систему, и получить тип пользователя.

В зависимости от типа я хочу показать / скрыть панель. На сам элемент управления ссылаются не на главную страницу, а динамически через систему CMS.

Я хочу использовать findcontrol в пользовательском элементе управления, чтобы найти панель управления на главной странице. Я пробовал разные методы, но все возвращается с нуля.

Заполнитель содержимого на главной странице     asp: контент runat = & quot; сервер & quot; ContentPlaceHolderID = & Quot; PHMainBlock & Quot;

и управление называется     asp: идентификатор панели = & quot; NormalUser & quot; Runat = & Quot; Сервер & Quot;

Я попытался с помощью кода ....

<code>Panel ph = (Panel)Page.Master.FindControl("NormalUser");
ph.Visible = false;
</code>

но возвращает ноль, любая помощь?

Спасибо..

Установить имя класса для вашего элемента управления и искать его через атрибут класса? Теперь зарегистрируйте скрипт запуска и получите доступ к функции, чтобы сделать то же самое. Pankaj

Ваш Ответ

4   ответа
0

uery):

$('.NormalUser').hide();

http://api.jquery.com/hide/

Error: User Rate Limit Exceeded
4

т.е.

public bool ShowPanel
{
    set
    {
        NormalUser.Visible = value;
    }
}

И называть это так

if (Page.Master is NameOfMasterPage)
{
    ((NameOfMasterPage)Page.Master).ShowPanel = false;
}
0

if (Page.Master != null)
{
    var tempPanel = Page.Master.FindControl("MessagePanel") as UpdatePanel;
    if (tempPanel != null)
        tempPanel.Visible = true;


    var temp = Page.Master.FindControl("MessageForUser") as MessageToUser;
    if (temp != null)
        temp.PostWarningMessage(message, msgInterval);
}

Тем не менее, у меня есть «MessagePanel» и & quot; MessageForUser & quot; в качестве элементов управления прямо над ContentPlaceHolder. Вот моя разметка:

<asp:UpdatePanel runat="server" Visible="true" ID="MessagePanel" >
    <ContentTemplate>
        <msg:MainMessage ID="MessageForUser" runat="server" Visible="true" />  
        <br />
    </ContentTemplate>
</asp:UpdatePanel>
<asp:ContentPlaceHolder ID="cphContent" runat="server" Visible="true">              
</asp:ContentPlaceHolder>

Если у вас есть Panel внутри тега, тогда вы сможете ссылаться на панель без необходимости Page.Master.FindControl.

1

я ContentPlaceHolder, сначала необходимо получить ссылку на ContentPlaceHolder, а затем использовать его метод FindControl, чтобы найти элемент управления TextBox.

ContentPlaceHolder mpContentPlaceHolder;
Panel pn;
mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("PHMainBlock");
if(mpContentPlaceHolder != null)
{
    pn = (Panel) mpContentPlaceHolder.FindControl("NormalUser");
    pn.Visible = false;
}

http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx

Похожие вопросы