2012-06-19 4 views
0

사용자 지정 목록 검색 도구를 개발하고 있습니다. 검색 할 쿼리를 나열 할 필드와 검색 쿼리를 나열 할 여러 사용자 지정 속성이 있습니다.사용자 지정 SharePoint WebPart - 사용자 지정 속성 설정 문제

예 UI

DROPDOWN (목록에서 선택한 필드) 텍스트 상자 (쿼리) SEARCHBUTTON

내 문제는는 WebPart를로드 할 때 "필드가 검색에"라는 속성에 "목록하기 전에 설정되고있다

필드를 드롭 다운에 추가하기 전에 실제로 올바른 목록에 있는지 확인해야하므로 원인과 오류가 있습니다.

로드 할 때 웹 파트 속성을 어떤 순서로 설정해야합니까?

+0

코드를 샘플로 게시하면 속성이 설정되는 방법/위치를 보여주는 것이 도움이 될 것입니다. – CBono

+0

내 .cs 파일에있는 두 개의 속성을 게시했습니다. 그것들은 파일의 처음 두 개이며, 문제는 listToSearch 속성이 searchByOptions 뒤에 설정되어 있다는 것입니다. 기본값은 – user1429393

+0

이 아닌 설정에서 listToSearch 속성이 필요합니다. 나중에 정보를 추가하기 위해 질문을 편집해야한다는 것을 알고 있습니다. 대답으로 게시했습니다. – CBono

답변

0

은 당신이 당신의 재산 세터에서 다른 방법 (예를 들어 CreateChildControls)로 유효성 검사 논리를 이동하는 데이 경우, 가장 쉬운 방법 일 것입니다 생각합니다. 이렇게하면 속성 설정 순서에 대한 종속성이 제거됩니다.

나는 일반적으로 내 웹 파트 속성에 논리가 없거나 매우 적습니다. 나는 처음부터 CreateChildControls에서 모든 유효성 검증을 수행합니다. 그런 다음 일부 속성에 누락되거나 잘못된 값이있는 경우 예외를 throw하거나 더 일반적으로 웹 파트의 출력을 사용하여 설명 메시지를 작성할 수 있습니다.

0
[Category("Search Settings"), 
Personalizable(PersonalizationScope.Shared), 
WebBrowsable(true), WebDisplayName("List Name"), 
WebDescription("Enter list name")] 
    public string CustomTextProp { 
     get { return listToSearch; } 
     set { 
      int existsFlag = 0; 
      foreach (SPList spl in thisWeb.Lists) { 
       if (spl.Title == value || value == string.Empty) { 
        existsFlag = 1; 
        break; 
       } 
      } 
      if (existsFlag == 1) { 
       listToSearch = value; 
      } else { 
       throw new WebPartPages.WebPartPageUserException("The list entered does not exist - Enter an existing list or create a new one"); 
      } 
     } 
    } 
0
[Category("Search Settings"), 
Personalizable(PersonalizationScope.Shared), 
WebBrowsable(true), WebDisplayName("Search Field Options (Separate by comma ',')"), 
WebDescription("Enter Fields to Search By")] 
    public string SearchByOptions { 
     get { 
      return searchByOptions; 
     } 
     set {//between here 
      // int validFlag = 1; 
      // foreach (string str in SeparateByComma(value)) { 
      // if (!FieldExists(str, CustomTextProp)) { 
      //  validFlag = 0; 
      //  break; 
      // } 
      // } 
      // if (validFlag == 1) { 
      searchByOptions = value; 
      // } else { 
      // throw new WebPartPages.WebPartPageUserException("Option is null or one or more fields do not exist/have been entered incorrectly"); 
      // }//and here 
     } 
    } 
관련 문제