Может ли веб-элемент управления редактировать свойства, принадлежащие его родителю? - PullRequest
1 голос
/ 14 июля 2009

У меня есть страница .aspx, которая загружает три отдельных элемента .ascx для представления добавления, редактирования и перечисления объектов. В настоящее время он просто меняет видимость и включает / отключает элементы управления для переключения между страницами.

Однако, при перечислении объектов (в виде сетки), мы предлагаем базовую кнопку «Редактировать» рядом с каждым. Нажав на это, вы, очевидно, загрузите контроль редактирования для этого пользователя. Эта функциональность существует внутри элемента управления, а не на родительской странице.

Можно ли изменить атрибуты для родителя на основе событий, происходящих в дочернем элементе управления? (Например, изменить видимость и включить / отключить другие дочерние элементы управления)

Ответы [ 3 ]

2 голосов
/ 14 июля 2009

Да, вы можете. Мы делаем это успешно в нашем проекте C #; Я думаю, что то же самое относится и к vb.net.

Каждый пользовательский элемент управления имеет свойство Page, которое ссылается на страницу, на которой оно размещено. Создайте интерфейс, который предоставляет свойства, которые вы хотите изменить, или методы, которые вы хотите вызвать. Пусть каждая страница, на которой размещен пользовательский элемент управления, реализует этот интерфейс. Реализация, очевидно, должна влиять на правильные элементы управления на странице.

Затем введите свойство Page в этот интерфейс и установите свойство (я).
Например (опять же, это C #, не уверен, что такое эквивалент VB.Net):

interface IUpdatePage {
    void ChangeButton(String toValue);
}

public class MyPage : Page, IUpdatePage {
    public void ChangeButton(String toValue) {
        // do something interesting
    }
}

public class MyUserControl : UserControl {
    public void UpdateParent() {
        var pageLink = (Page as IUpdatePage);
        pageLink.ChangeButton("some value");
    }
}
0 голосов
/ 14 июля 2009

Я не думаю, что понимаю ваш поток. Что именно происходит, когда вы нажимаете кнопку редактирования в сетке? Вы запускаете событие ItemCommand, и вы либо находите элемент управления редактирования и делаете его видимым, либо загружаете его и делаете его видимым. Это правильно?

Тогда, при каких условиях элемент управления редактирования хочет изменить свойства своего родителя?

0 голосов
/ 14 июля 2009

Это можно сделать в браузере, используя Javascript или JQuery.

document.getElementById("myID").style.visibility="visible";
document.getElementById("myID").style.visibility="hidden";

События Codebehind, как правило, ставятся в очередь / задерживаются до возникновения обратной передачи, если вы не используете Ajax. Если вы используете Ajax, вы можете перерисовать ту часть формы, которая требует изменения видимости.

...