Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式更新SharePoint自定义字段类型列值_Sharepoint_Custom Fields_Custom Field Type - Fatal编程技术网

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

以编程方式更新SharePoint自定义字段类型列值,sharepoint,custom-fields,custom-field-type,Sharepoint,Custom Fields,Custom Field Type,我在SharePoint中创建了一个基于“多行文本”字段类型的自定义字段类型(例如“示例”)。现在,我已经在列表中创建了一个类型为“Sample”的新列(比如“test”)。我创建了一些列表项 我可以从SharePoint UI(通过编辑表单)成功编辑列值。但当我试图通过编程方式修改任何列表项的“test”列的值时,该列表项的“test”列的值变为null/空 知道为什么会发生这个问题吗??下面是我正在使用的FiledTypesXML <?xml version="1.0" encodin

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

我可以从SharePoint UI(通过编辑表单)成功编辑列值。但当我试图通过编程方式修改任何列表项的“test”列的值时,该列表项的“test”列的值变为null/空

知道为什么会发生这个问题吗??下面是我正在使用的FiledTypesXML

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

一件重要的事情:此代码在另一个列表的ItemUpdated eventhadler中运行。

对于您的代码,使用“FieldTypeClass”的自定义字段类型存在问题。请尝试此“SharePoint.Sample.FieldType,SharePoint.Sample,版本=1.0.0,区域性=中性,PublicKeyToken=c5560aa45b5518dc”


希望这能对您有所帮助。

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

如果您可以共享该代码,他们的自定义字段类型似乎有问题。我可以帮助您共享代码,您使用的是SharePointObjectModel还是web服务?请浏览到此位置C:\Program Files\Common Files\Microsoft Shared\WebServer Extensions\12\TEMPLATE\XML并找到您的fldtypes\u fieldname.XML文件。然后验证它是否正确在你更新它之前什么是
item[“test”]
?@Kobi:如果我尝试获取item[“test”]的值,它会给我正确的值。嘿,维韦克:实际上,这是发布前编辑的错误。实际上,我使用的是与u建议的相同的。Anoop,在列表项更新之前使用web.allowunsafeupdates=true。thanx…已经尝试过但没有luckAnoop,您的自定义字段类型存在一些问题,请尝试在和1的帮助下创建另一个自定义字段类型,因为这没有告诉我们如何解决问题。您是如何阻止调用GetValidatedString()的?或者你是如何处理被调用的值的?
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();