0

「複数行のテキスト」フィールドタイプに基づくカスタムフィールドタイプ(「サンプル」など)を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>

編集に使用しているコード:

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

重要なことの1つ:このコードは、別のリストのitemupdatingeventhadlerで実行されます。

4

2 に答える 2

1

コードで、「FieldTypeClass」を使用したカスタムフィールドタイプに問題があります。これを試してください'SharePoint.Sample.FieldType、SharePoint.Sample、Version = 1.0.0.0、Culture = neutral、PublicKeyToken =c5560aa45b5518dc'

これがお役に立てば幸いです。

于 2010-12-06T09:24:40.217 に答える
-1

さて、問題のある領域を見つけました。値の検証に使用されるGetValidatedString()という関数があります。この関数は、プログラムで値を更新する場合でも呼び出されます。それは問題を引き起こしていました。

于 2010-12-06T14:41:55.687 に答える