编程方式更新在SharePoint这是基于“多行文本”字段类型的SharePoint自定义字段类型的列值

问题描述:

我创建了一个自定义字段类型(说“样本”)。现在我已经在列表中创建了一个新的列(例如'test')。我创建了一些列表项。编程方式更新在SharePoint这是基于“多行文本”字段类型的SharePoint自定义字段类型的列值

我可以成功地从SharePoint UI(通过编辑表格)编辑列值。但是,当我尝试以任何列表项目的编程方式修改'test'列的值时,该列表项的'test'列的值将变为null/empty。

任何想法为什么这个探针发生?下面是filedtypes XML,我现在用的是我使用的编辑

<?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> 

代码:

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(); 

一件重要的事情:该代码在itemupdating eventhadler另一个列表的运行。

+2

看来他们的一些问题与您自定义字段类型,如果你可以共享代码,可能是我可以帮你 – 2010-12-06 06:01:05

+0

分享你的代码,您使用的SharePointObjectModel或Web服务? – 2010-12-06 07:41:32

+1

请浏览至此位置C:\ Program Files \ Common Files \ Microsoft Shared \ WebServer Extensions \ 12 \ TEMPLATE \ XML并找到您的fldtypes_fieldname.xml文件。然后在更新之前验证它是否正确 – 2010-12-06 09:28:07

嗯,我发现问题所在。有一个名为GetValidatedString()的函数,用于对值进行任何验证。即使在以编程方式更新值时,该函数也会被调用。 这是造成一个问题。

与您的代码,有与“FieldTypeClass”您的自定义字段类型的问题。试试这个'SharePoint.Sample.FieldType,SharePoint.Sample,版本= 1.0.0.0,文化=中立,PublicKeyToken = c5560aa45b5518dc'

希望这会帮助你。