2010-12-06 4 views
0

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があります。

+2

あなたのカスタムフィールドタイプに問題があると思われる場合は、そのコードを共有してもらえますか? –

+0

コードを共有しているか、SharePointObjectModelまたはWebサービスを使用していますか? –

+1

C:¥Program Files¥Common Files¥Microsoft Shared¥WebServer Extensions¥12¥TEMPLATE¥XMLに移動し、fldtypes_fieldname.xmlファイルを見つけます。そして正しいかどうか確認してください。 –

答えて

-1

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

+0

1これは、問題の解決方法を教えてくれないため1です。あなたはGetValidatedString()が呼び出されるのを止めるために何をしましたか?あるいは、その価値を回避するためにどのように働いたのですか? – pmartin

1

コードでは、カスタムフィールドタイプに「FieldTypeClass」という問題があります。この 'SharePoint.Sample.FieldType、SharePoint.Sample、バージョン= 1.0.0.0、Culture =ニュートラル、PublicKeyToken = c5560aa45b5518dc'を試してください

これがあなたに役立つことを望みます。

+0

ちょっとVivek:実際には、それは投稿する前に編集の間違いだった。実際に私は同じuを使用していた。 – Anoop

+0

Anoop、リスト項目の更新前にweb.allowunsafeupdates = trueを試してください。 –

+0

thanx ...既に試してみましたが運がありません – Anoop

関連する問題