소비자 웹 파트가 제공자 웹 파트의 변경 사항에 응답하지 않습니다.

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/54001

  •  10-12-2019
  •  | 
  •  

문제

현재 연결된 3 개의 웹 파트를 사용하고 있습니다 (웹 파트 A에 연결된 B, B에 연결된 B에 연결됨). B와 C. WebPart B 간의 연결에 문제가 없으며 공급자와 소비자이며 일부 변수가있는 Dropbox 만 포함합니다. 이 Dropbox의 SelectedItem은 제공된 값입니다. 이것은 WebPart B에서 사용중인 코드의 ConnectionProvider입니다.

[ConnectionProvider("DropboxValue", "dbv")]
public IDropBoxValue provider()
{
     return this;
}
.

이것은 WebPart C에서 사용중인 ConnectionConsumer입니다.

[ConnectionConsumer("DropboxValue", "dbv")]
public void consumer(IDropBoxValue providerInterface)
{
     _provider = providerInterface;
}
.

페이지의 첫 번째로드에서 DropboxValue가 자동으로 선택되고 WebPart C는이 변수를 사용하여 데이터가있는 SPGridView를 만듭니다. 이제 Dropbox WebPart C에서 새 항목을 선택 하여이 변수를 변경하면 해당 Dropbox WebPart C가 응답하지 않습니다. 실제로 디버그에서 프로젝트를 실행하면 웹 페이지에서 호출되지 않습니다.

왜 WebPart C가 WebPart B의 변경 사항에 응답하지 않는 이유는 무엇입니까?

추가 편집 WebPart B에서 SelectedValue를 변경할 때마다 "Provider 웹 파트가 연결되지 않은"텍스트가 변경됩니다. 이 오류는 나에 의해 만들어지며 때 던져집니다.

if (_Provider == null)
.

_Provider는 웹 파트의 인터페이스입니다.

도움이 되었습니까?

해결책

CASECHILDCONTROLS 및 OnPrender 함수를 사용하는 경우에 오류가 있습니다.onPRerender 함수에서 호출되어야하는 동안 createchildControls에서 공급자를 호출했습니다.

createChildControls에서 다른 WebPart를 호출하면 해당 웹 파트의 createchildControls가 시작되지 않은 것일 수 있습니다.OnPRerender가 호출되면 모든 WebParts의 모든 CreateChildControl 함수가 호출되었습니다.따라서 OnPrelerender가 호출되는 시점에서 현재 페이지의 모든 웹 파트가 나타납니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top