2011-08-17 4 views
4

안녕하십니까 StackOverflow 회원!Sharepoint 2010 - 사용자에게 샘플 데이터 추가하기 필드 유형

Visual Studio (trough XML)에서 사용자 지정 목록을 개발하고 있습니다. 나는 목록 정의 (내용 유형 포함)를 작성하고 목록 인스턴스를 추가했다.

<?xml version="1.0" encoding="utf-8"?> 
<List xmlns:ows="Microsoft SharePoint" Title="Teams" EnableContentTypes="TRUE" FolderCreation="FALSE" Direction="$Resources:Direction;" Url="Lists/Teams" BaseType="0" xmlns="http://schemas.microsoft.com/sharepoint/"> 
<MetaData> 
<ContentTypes> 
    <ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313DE94" /> 
</ContentTypes> 
<Fields> 
    <Field Type="User" Name="Employee" DisplayName="Employee" Required="TRUE" ID="{7B18E941-BAAD-453A-895C-39579AB5A9F1}" Group="Sample Group" /> 
    <Field Type="Boolean" Name="Manager" DisplayName="Manager" ID="{9FC927CC-45EB-4E9E-8F25-18AAEDF7DCAF}" Group="Sample Group" /> 
</Fields> 
<Views> 
    <View BaseViewID="0" Type="HTML" MobileView="TRUE" TabularView="FALSE"> 
    <Toolbar Type="Standard" /> 
    <XslLink Default="TRUE">main.xsl</XslLink> 
    <RowLimit Paged="TRUE">30</RowLimit> 
    <ViewFields>  
     <FieldRef Name="Employee" /> 
     <FieldRef Name="Manager" /> 
    </ViewFields> 
    <Query> 
     <OrderBy> 
     <FieldRef Name="Modified" Ascending="FALSE"></FieldRef> 
     </OrderBy> 
    </Query> 
    <ParameterBindings> 
     <ParameterBinding Name="AddNewAnnouncement" Location="Resource(wss,addnewitem)" /> 
     <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /> 
     <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_ONET_HOME)" /> 
    </ParameterBindings> 
    </View> 
    <View BaseViewID="1" Type="HTML" WebPartZoneID="Main" DisplayName="$Resources:core,objectiv_schema_mwsidcamlidC24;" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="AllItems.aspx"> 
    <Toolbar Type="Standard" /> 
    <XslLink Default="TRUE">main.xsl</XslLink> 
    <RowLimit Paged="TRUE">30</RowLimit> 
    <ViewFields> 
     <FieldRef Name="LinkTitle"></FieldRef>  
     <FieldRef Name="Employee" /> 
     <FieldRef Name="Manager" /> 
    </ViewFields> 
    <Query> 
     <OrderBy> 
     <FieldRef Name="ID"></FieldRef> 
     </OrderBy> 
    </Query> 
    <ParameterBindings> 
     <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /> 
     <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" /> 
    </ParameterBindings> 
    </View> 
</Views> 
<Forms> 
    <Form Type="DisplayForm" Url="DispForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
    <Form Type="EditForm" Url="EditForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
    <Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
</Forms> 

및 목록 서식 파일 및 콘텐츠 유형 elements.xml :

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
<!-- Do not change the value of the Name attribute below. If it does not match the folder name of the List Definition project item, an error will occur when the project is run. --> 
<ListTemplate 
    Name="TeamList" 
    Type="10000" 
    BaseType="0" 
    OnQuickLaunch="TRUE" 
    SecurityBits="11" 
    Sequence="410" 
    DisplayName="TeamList" 
    Description="My List Definition" 
    Image="/_layouts/images/itgen.png"> 

</ListTemplate> 
<ContentType 
    ID="0x010089E3E6DB8C9B4B3FBB980447E313DE94" 
    Name="Team Member" 
    Group="Sample Group" 
    Description="" 
    Version="0"> 
    <FieldRefs> 
     <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" Hidden="TRUE" /> 
     <FieldRef ID="{7B18E941-BAAD-453A-895C-39579AB5A9F1}" /> 
     <FieldRef ID="{9FC927CC-45EB-4E9E-8F25-18AAEDF7DCAF}" /> 
    </FieldRefs> 
</ContentType> 

<Field Type="User" Name="Employee" DisplayName="Employee" Required="TRUE" ID="{7B18E941-BAAD-453A-895C-39579AB5A9F1}" Group="Sample Group" /> 
<Field Type="Boolean" Name="Manager" DisplayName="Manager" ID="{9FC927CC-45EB-4E9E-8F25-18AAEDF7DCAF}" Group="Sample Group" /> 

</Elements> 

질문은 : 어떻게 여기

내 목록의 schema.xml입니다 샘플 데이터를이 목록에 추가 하시겠습니까? 특히 "사용자"유형의 필드에?

<ListInstance Title="TeamList" 
      OnQuickLaunch="TRUE" 
      TemplateType="10000" 
      Url="Lists/TeamList" 
      Description="TeamList"> 
    <Data> 
     <Rows> 
      <Row> 
       <Field Name="Employee">CONTOSO\joses</Field> 
       <Field Name="Manager">true</Field> 
      </Row> 
     </Rows> 
    </Data> 

하지만, 오류가 occures : 오류 '기능을 활성화'배포 단계에서 발생 하나 이상의 필드 유형을

나는 다음과 같은 목록 인스턴스 요소에이 코드를 추가하려고 에 제대로 설치되지 않았습니다. 대화 상자와 함께 작동시키기위한 도움은 매우 감사하겠습니다.

+0

샘플 데이터없이 ListInstance를 만들 수 있습니까? 나는 당신이 목록 제목/URL로 "Zespół"를 지정할 수 있다고 생각하지 않으며 오류가 잘못 될 수도 있습니다 ... – int32

+0

예. 샘플 데이터없이 작동합니다. 오해의 소지가있는 ListInstance 이름에 대해 유감스럽게 생각합니다.이 부분을 환경 언어 (PL)에서 번역하는 것을 잊었습니다. – Redzio

+0

아, 괜찮습니다. 괜찮습니다. CONTOSO \ joses가 있습니까? 그렇다면, 나는이 예외를 야기 할 수있는 아이디어가 더 이상 없기를 두려워합니다. 맞춤 코드없이 이벤트 수신자 – int32

답변

6

User 필드는 특별한 유형의 조회 필드입니다. 따라서 텍스트 값은 ID;#TextValue 형식으로 표시됩니다. 실제로 ID는 중요한 것입니다. 가치는 크게 무시됩니다. 사용자 이름은 항상 동일하지만 해당 사용자를 나타내는 ID는 사이트 모음에서 사이트 모음으로 변경되므로 문제가 될 수 있습니다.

귀하의 행 XML은 다음과 비슷한 모습이 될 것

<Data> 
    <Rows> 
     <Row> 
      <Field Name="Employee">99;#CONTOSO\joses</Field> 
      <Field Name="Manager">true</Field> 
     </Row> 
    </Rows> 
</Data> 

당신이 기존 사이트에 배포되고 있다고, 그래서 당신은 CONTOSO \의 요세에 대한 사용자 정보 페이지를 찾아 볼 수 있습니다. ID는 URL의 쿼리 문자열에 있습니다. 그러나이 사이트에서이 기능이 작동하더라도 다른 사이트 모음에서이 기능이 작동한다는 보장은 없습니다.

이 문제를 방지하려면 XML을 사용하여 목록 인스턴스를 시드하는 대신 기능 수신기를 사용하여 사용자 필드로 목록을 미리 채 웁니다. 나는 사용자가 이미 존재하지 않으면 사이트에 사용자를 추가하기 때문에 EnsureUser을 선호합니다.

+0

작동 중입니다! 고맙습니다. – Redzio

3

이것은 또한 작동합니다 : 셰어 포인트 2013에서

<Field Name="Employee">-1;#CONTOSO\joses</Field> 
+0

ID로 -1의 의미는 무엇입니까? – Kache

+0

이것은 나를 위해 작동하지 않았다. – Zarepheth

1

-1을 사용하여 # 유형 사용자의 열을 채우기 위해 오류 가능성이 줄어 듭니다.

당신은 철자를 잘못 또는 존재하지 않는 사용자에 제공하는 경우 : 레코드가 생성되지 않습니다

<Field Name="Employee">-1;#domain\nonexistent account or misspelled</Field> 

합니다.

ID를 명시 적으로 지정하면 기존 그룹이나 사용자가 할당 될 수 있으며 디버깅이 훨씬 어려울 수 있습니다.당신은 또한 ID 컬럼의 값을 제공 특히 경우 :

<Field Name="ID">1</Field> 
<Field Name="Employee">1;#domain\nonexistent account or misspelled</Field> 

두 리치의 조나단의 답변이 올바른지, 그냥 명확히하고 싶었다 낮은 담당자 때문에 언급 할 수있다.