2010-12-06 5 views
0

을 업데이트했습니다. 'multiline text'필드 유형을 기반으로 SharePoint에서 사용자 정의 필드 유형 (예 : 'Sample')을 만들었습니다. 이제 목록에 'Sample'유형의 새로운 열 ('test')을 만들었습니다. 몇 가지 목록 항목을 만들었습니다.프로그래밍 방식으로 SharePoint 사용자 정의 필드 유형 열 값

(편집 양식을 통해) SharePoint UI에서 열 값을 성공적으로 편집 할 수 있습니다. 그러나 모든 목록 항목에 대해 'test'열 값을 프로그램 적으로 수정하려고하면 해당 목록 항목의 'test'열 값이 null/empty가됩니다.

이 probem이 발생하는 이유는 무엇입니까?

SPSite site = new SPSite("site url") 
SPWeb web = site.OpenWeb(); 
SPList list = web.Lists["MyList"]; 
SPListItem item = list.Items[0]; 
item["test"] = "xyz"; //becomes null after update 
item["numCol"] = "34"; //Gets updated to new value 34 after update 
web.AllowUnsafeUpdates = true; 
item.Update(); 

하나 개 중요한 것은 :이 코드는 다른 목록의 eventhadler을 itemupdating에서 실행 다음은 내가 편집 사용하고

<?xml version="1.0" encoding="utf-8"?> 
<FieldTypes> 
<FieldType> 
    <Field Name="TypeName">Sample</Field> 
    <Field Name="ParentType">Note</Field> 
    <Field Name="TypeDisplayName">Sample</Field> 
    <Field Name="TypeShortDescription">Sample</Field> 
    <Field Name="UserCreatable">TRUE</Field> 
    <Field Name="ShowInListCreate">TRUE</Field> 
    <Field Name="ShowInSurveyCreate">TRUE</Field> 
    <Field Name="ShowInDocumentLibraryCreate">TRUE</Field> 
    <Field Name="ShowInColumnTemplateCreate">TRUE</Field> 
    <Field Name="FieldTypeClass"> 
    SharePoint.Sample.FieldType, SharePoint.Sample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c5560aa45b5518dc 
    </Field> 
    <Field Name="FieldEditorUserControl"> 
    /_controltemplates/FieldEditor.ascx 
    </Field> 
    <PropertySchema> 
    <Fields> 
    <Field Name="DisplayedListBoxProperty" DisplayName="DisplayedListBoxProperty" 
    Type="Text" Hidden="True"> 
    <Default>"abc"</Default> 
    </Field> 
    </Fields> 
    </PropertySchema> 
</FieldType> 
</FieldTypes> 

코드를 사용하고있는 filedtypes의 XML입니다.

+2

코드를 공유 할 수 있다면 자신의 사용자 정의 필드 유형에 문제가있는 것 같습니다. –

+0

코드 공유, SharePointObjectModel 또는 웹 서비스 사용 중입니까? –

+1

이 위치로 이동하십시오. C : ₩ Program Files ₩ Common Files ₩ Microsoft Shared ₩ WebServer Extensions ₩ 12 ₩ TEMPLATE ₩ XML을 찾아 fldtypes_fieldname.xml 파일을 찾으십시오. 그런 다음 올바른지 확인하십시오. –

답변

-1

글쎄, 문제 영역을 발견했습니다. 값에 대한 유효성 검사에 사용되는 GetValidatedString()이라는 함수가 있습니다. 프로그래밍 방식으로 값을 업데이트하는 경우에도이 함수가 호출됩니다. 문제가 발생했습니다.

+0

1이 문제를 어떻게 해결했는지 알려주지 않으므로 1입니다. GetValidatedString()이 호출되지 않게하려면 어떻게 했습니까? 아니면 그 가치를 불렀을 때 어떻게 일 했습니까? – pmartin

1

코드에서 "FieldTypeClass"로 사용자 정의 필드 유형에 문제가 있습니다. 'SharePoint.Sample.FieldType, SharePoint.Sample, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = c5560aa45b5518dc'

희망이 도움이 될 것입니다.

+0

안녕하세요. Vivek : 사실 게시 전의 실수였습니다. 사실 나는 같은 u를 사용했다. – Anoop

+0

Anoop, 목록 항목 업데이트 전에 web.allowunsafeupdates = true로 시도하십시오. –

+0

thanx ... 이미 시도했지만 행운 없음 – Anoop

관련 문제