2009-11-30 5 views
0

SharePoint에서 작성한 사용자 지정 목록을 사용하고 있습니다. 기능이 활성화 될 때 시작되는 이벤트 핸들러가있는 기능이 있습니다. 내가 함수가 as described here.SPFieldLinkCollection.Reorder 문제 : 문서화 된대로 작동하지 않습니다.

private void OrderFields(SPWeb web) 
{ 
    // This works fine: I get the expected SPContentType object 
    // There is only 1 SPContentType in ContentTypes 
    SPContentType contentType = web.Lists[TASK_LIST_NAME].ContentTypes[0]; 

    contentType.FieldLinks.Reorder(new string[4] 
    { 
     "Field1", 
     "Field2", 
     "Field3", 
     "Field4" 
    }); 

    contentType.Update(); 
} 

web.Update();뿐만 아니라 OrderFields 전화를 호출하는 기능을 동작하는 것을 의도하고있어

: 그 이벤트 핸들러는 다음과 같은 기능을 (I 디버깅하고 실행 볼 수 있습니다)를 호출합니다.

아쉽게도 순서 변경 호출은 양식에서 내 필드를 재정렬하지 않습니다. 내가 놓친 게 있니? 누구든지 시도해 볼 수있는 트릭을 제안 할 수 있습니까?

답변

0

문제가 필드 이름과 관련이 있습니다.

이전에 프로그래밍 방식으로 이벤트 처리기를 실행했을 때 두 가지 조회가있었습니다. 이러한 조회의 내부 이름은 내 CAML 정의의 Name 및 StaticName 매개 변수에서 제공 한 "Field1"및 "Field2"이름과 상당히 다릅니다.

대신 내부 이름은 표시 이름으로 구성되며 공백은 ""으로 바뀌며 32 자 길이로 잘립니다.

+0

그래서 필자는 항상 피쳐 조회자를 사용하여 코드에서 조회 필드를 만듭니다 (일반적인 CAML 방식은 조회 외에 다른 유형의 필드를 작성하는 것이 작동하지 않으므로 UI를 사용할 때 옵션을 사용할 수 없기 때문입니다). 거대한 사이트 개발). 공백이있는 UI, _x0020_으로 대체 된 공백 및 최대 32 자까지 생성 된 모든 필드에서 발생합니다. – Colin

+0

피처 수신자가 조회 필드를 만듭니다. 템플릿 파일에서 XML을 읽고 템플릿의 List 속성을 소스 목록의 ID로 설정하고 AddSchemaXML을 호출하면됩니다 (함수를 잊어 버렸습니다 : 그것은 내 앞에 있지 않습니다.) 아마도 더 좋은 방법이 있습니다. 이 문제가 발생하지 않도록 필드를 만드시겠습니까? – antik

관련 문제