Связывание нескольких asp.NET MultiViews - PullRequest
0 голосов
/ 24 марта 2009

Я имею дело с главной страницей, разделенной на различные заполнители контента, как обычно. На нескольких страницах я использую многовидовой просмотр, чтобы показать и скрыть контент, основанный на различных режимах просмотра (просмотр / редактирование / добавление). Это означает, что один многовидовой просмотр на заполнитель содержимого главной страницы ...

Проблема возникает, когда мне нужно переключить режимы просмотра, например, с «Вид» на «Редактировать». Мне нужно изменить каждый многовидовой на странице, чтобы показать соответствующую информацию. Так, скажем, существует 4 разных заполнителя контента с 3 разными режимами просмотра - это 12 строк довольно утомительного кода.

Мне интересно, есть ли способ синхронизировать или связать все многовидовые просмотры на странице, чтобы при одном изменении все они менялись соответственно? Как через какой-то мастер мультивью?

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

C # EERS!

Ответы [ 2 ]

1 голос
/ 24 марта 2009

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

Для этого не нужно слишком много кода, и вы можете избежать дублирования этого кода, создав базовый класс, наследуемый от MultiView для всех ваших экземпляров.

0 голосов
/ 25 марта 2009

Еще одна более автоматическая опция (но не такая производительная, как у RobW), заключается в рекурсивном поиске элементов управления страницы для любого мультивью. Что-то вроде:

ApplyToControlsRecursive(Page, c =>
{
    var multi = c as System.Web.UI.WebControls.MultiView;
    if (multi != null)
        multi.ActiveViewIndex = 1;
});
void ApplyToControlsRecursive(System.Web.UI.Control control, Action<System.Web.UI.Control> action)
{
    action(control);
    foreach (System.Web.UI.Control child in control.Controls)
    {
        ApplyToControlsRecursive(child, action);
    }
}
...