SharePointで「複数行テキスト」フィールドタイプに基づいたカスタムフィールドタイプ(「サンプル」など)を作成しました。これで、リスト内に「Sample」というタイプの新しい列( 'test')が作成されました。私はいくつかのリスト項目を作成しました。SharePointのカスタムフィールドタイプの列値をプログラムで更新する
SharePointのUI(編集フォーム)から列の値を正常に編集できます。しかし、テスト項目の値をプログラマチックに変更しようとすると、その項目の 'テスト'項目の値は空/空になります。
このプローブがなぜ発生しているのか何か考えていますか?
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があります。
あなたのカスタムフィールドタイプに問題があると思われる場合は、そのコードを共有してもらえますか? –
コードを共有しているか、SharePointObjectModelまたはWebサービスを使用していますか? –
C:¥Program Files¥Common Files¥Microsoft Shared¥WebServer Extensions¥12¥TEMPLATE¥XMLに移動し、fldtypes_fieldname.xmlファイルを見つけます。そして正しいかどうか確認してください。 –