Потребительская веб-часть не отвечает на изменения в веб-части провайдера
-
10-12-2019 - |
Вопрос
Я в настоящее время использую 3 веб-частей, которые подключены (WebPart A, подключенные к B, B, подключенные к C). Проблема лежит в соединении между B и C. WebPart B - провайдер и потребитель, и содержит только DropBox с некоторыми переменными. Выполненные элементы из этого Dropbox являются прилагаемым значением. Это ConnectionProvider в коде, который я использую в WebPart B.
[ConnectionProvider("DropboxValue", "dbv")]
public IDropBoxValue provider()
{
return this;
}
.
Это подключениеConsumer, я использую в WebPart C.
[ConnectionConsumer("DropboxValue", "dbv")]
public void consumer(IDropBoxValue providerInterface)
{
_provider = providerInterface;
}
.
На первой загрузке страницы ShopboxValue автоматически выбирается, и WebPart C использует эту переменную для создания SPGRIDVIEW с данными. Теперь, если я изменим эту переменную, выбрав новый элемент из WebPart Dropbox C, не отвечает на него. На самом деле, если я запуску проекта в отладке ничего не вызывается из WebPart C.
Так почему WebPart C не отвечает на изменения в WebPart B?
<Сильные> Дополнительные редактирование Всякий раз, когда я изменяю выбранную информацию в WebPart B, он меняет свой текст на «Нет подключена веб-часть Provider». Эта ошибка создана мной и брошена, когда
if (_Provider == null)
.
_Provider - это интерфейс веб-сайта поставщика.
Решение
Ошибка в моем случае раскладывается с использованием CreatechildControls и функций onPrender.Я позвонил провайдеру в CreateChildControls, пока он должен был вызван в функции onPrerender.
Если вы называете другой веб-сайт в CreateChildControls, возможно, что CreateChildControl от этого веб-панель не были инициированы.Когда onPrerender называется всеми функциями CreatechildControl всех веб-панелей.И вот в то время, когда OnPrender называется все WebParts на текущей странице, будет экскавист.