2011-09-01 3 views
0

SharePoint 2010에서는 CAML을 사용하여 목록을 프로비저닝 할 때 기존 ListInstance를 이미 덮어 쓰지 않을 수 있습니까? 또는 사용자 정의 코드가 필요합니까?CAML을 통한 ListInstance 프로비저닝

편집 : 이 질문은 내게 불분명했습니다. 기본 vs2010 빌드/배포 프로세스를 사용하여 솔루션을 통해 목록 인스턴스를 배포한다는 점에 유의해야합니다. 이 프로세스를 사용하면 배포 할 때 목록 인스턴스가 제거되고 다시 만들어집니다. 매번 다시 작성되는 것을 막으려 고하고 있습니다.

답변

1

아니요, 기존 목록을 ListInstance 요소로 덮어 쓸 수 없습니다. EnableVersioningHidden을 변경할 수 있습니다. 데이터/행/행을 통해 항목을 추가 할 수도 있습니다. 그러나 원래 목록은 남아 있습니다. 보내는 사람

"documentation는"여기 Microsoft.SharePoint.SPListInstanceElement에서 코드 : 솔루션을 배포 할 때

internal override void ElementActivated(SPFeaturePropertyCollection props, SPSqlCommand sqlcmdAppendOnly, SPWebApplication webApp, SPSite site, SPWeb web, bool fForce) 
{ 
    bool flag1 = this.FeatureDefinition.Scope == SPFeatureScope.Site; 
    bool flag2 = true; 
    if (this.RootWebOnly && !web.IsRootWeb) 
    flag2 = false; 
    if (!flag2) 
    return; 
    this.EnsureDataProvisioned(this.EnsureListExists(!flag1 ? web : site.RootWeb)); 
} 

internal SPList EnsureListExists(SPWeb web) 
{ 
    SPList spList = web.Lists.GetListByName(this.Title, false); 
    if (spList == null) 
    { 
    // SNIP - list would be created here 
    } 
    bool flag = false; 
    if (this.VersioningEnabled.HasValue && spList.EnableVersioning != this.VersioningEnabled.Value) 
    { 
    spList.EnableVersioning = this.VersioningEnabled.Value; 
    flag = true; 
    } 
    if (this.Hidden.HasValue && spList.Hidden != this.Hidden.Value) 
    { 
    spList.Hidden = this.Hidden.Value; 
    flag = true; 
    } 
    if (flag) 
    spList.Update(); 
    return spList; 
} 
+0

감사합니다. 유용한 정보입니다. 내가 뭘 찾고 있었는지는 알 수 없지만, 내 질문에 분명하지 않았기 때문에. 나는 그것을 더 많은 정보로 업데이트했다. – Jeremy

0

가 기존 목록 인스턴스를 덮어 쓰려면, VS는 사용자를 묻는 메시지를 표시합니다. 목록을 덮어 쓰지 않도록 (그리고이 프롬프트를 모두 함께) "Deployment Conflict Resolution"을 "없음"으로 변경할 수 있습니다. "배치 충돌 해결"은 목록 인스턴스 요소의 속성 창에서 찾을 수 있습니다.

관련 문제