以编程方式更新SharePoint自定义字段类型列值

时间:2010-12-06 05:28:04

标签: sharepoint custom-fields custom-field-type

我在SharePoint中创建了一个基于“多行文字”字段类型的自定义字段类型(例如“示例”)。现在我在列表中创建了一个类型为'Sample'的新列(比如'test')。我创建了一些列表项。

我可以从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 个答案:

答案 0 :(得分:1)

使用您的代码时,自定义字段类型与“FieldTypeClass”存在问题。试试这个'SharePoint.Sample.FieldType,SharePoint.Sample,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = c5560aa45b5518dc'

希望这会对你有所帮助。

答案 1 :(得分:-1)

我找到了问题区域。有一个名为GetValidatedString()的函数,用于对值进行任何验证。即使在以编程方式更新值的情况下也会调用此函数。 这造成了一个问题。