У меня есть проект Visual Studio, в котором я создал Visual Webpart. В пользовательском управлении у меня есть панель, которую я хочу отобразить в режиме редактирования и скрыть в режиме просмотра.Показать/скрыть управление в Webpart на основе режима редактирования/просмотра
ASP.NET фрагмент кода:
<asp:panel runat="server" ID="myControl">
C# фрагмент кода в код управления пользователя за:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(this.Page);
if (wpm.DisplayMode == WebPartManager.BrowseDisplayMode)
{
myControl.Attributes.Add("style", "display: none");
}
else if (wpm.DisplayMode == WebPartManager.EditDisplayMode)
{
myControl.Attributes.Add("style", "display: block");
}
}
Это работает, но если у меня есть два же WebParts на же странице и поместить один веб-сайт в режим редактирования, он показывает панель в обоих веб-страницах. Кажется, что код событий OnPreRender
работает для обоих веб-страниц на странице.
Я даже пытался написать код как this.myControl.Attributes.Add("style", "display: block");
, но он все еще не работал.
Я хочу, чтобы код OnPreRender
запускался только на его веб-части и не изменял другой webaprt на странице. Как я могу это решить? Есть ли лучший (или предпочтительный) способ сделать это?
ПРИМЕЧАНИЕ: Мне нужно использовать display: none
, потому что с панелью будет доступен JavaScript.
PS: Это перекрестный столб от here, так как я не получил удовлетворительных ответов.
возможно wpm.SelectedWebPart и помогите как-нибудь. – AndreyBizin
Да. Я имею в виду SAME Web. – Naveen