asp.net выполняет действие после завершения дочерних элементов управления - PullRequest
0 голосов
/ 17 августа 2010

У меня есть usercontrol, который действует как контейнер для хранения большего количества пользовательских контролей внутри него.

Мне нужно выполнить определенные проверки доступа, как только у всех дочерних элементов управления будет привязана база данных.

Я надеялся, что смогу присоединиться к событию usercontrol.databound, но, похоже, его нет.

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

Ответы [ 2 ]

0 голосов
/ 11 июля 2013

На основе События жизненного цикла страницы ASP.net статья Я использовал это:

protected void Page_PreRenderComplete(object sender, EventArgs e)
{
  if (!IsPostBack) //only at 1st load
    UpdateSelection();
}

protected void UpdateSelection()
{
  UpdateSelection(listItems.SelectedValue);
}

protected void listItems_SelectedIndexChanged(object sender, EventArgs e)
{
  UpdateSelection();
}

В моем случае UpdateSelection загружал данные XML из файла, выбранного в раскрывающемся списке(который в начале указывает на индекс 0) и нуждался в некоторых CheckBoxLists на странице, чтобы сначала получить свои элементы из других файлов XML, чтобы они позволили коду проверять элементы на них на основе данных XML

С тех пор UpdateSelection просто вызывается в событии SelectedIndexChanged из выпадающего списка (те, которые делают PostBacks, поэтому в PreRenderComplete я игнорирую их, чтобы избежать повторного выполнения UpdateSelection)

0 голосов
/ 17 августа 2010

Вам не нужно получать дочерние элементы управления, чтобы уведомить родителя.Посмотрите на страницу ASP.Net: жизненный цикл .Вам нужно поместить код в пользовательский элемент управления контейнера в событии PreRender.Это выполняется после событий обратной передачи.

...