locked
ドキュメントライブラリの「タイトル」へのプログラムからの設定 RRS feed

  • 質問

  • こんにちは。

     

    WSS3.0 にてカスタム WebApplication を追加し、ドキュメントライブラリに対して、ファイルおよび付帯プロパティをアップロードする処理を開発しています。

     

    ほぼうまく動作しているのですが、ただ一点、あらかじめ用意されている(と思われる)「タイトル」プロパティに対して、入力値を設定することができません。

    対象のドキュメントライブラリに、手動で追加した「補足説明」という列に対しては、入力値を設定することができています。

    コードは、以下のような感じになります。

     

                Dim targetSite As SPWeb = SPContext.Current.Site.AllWebs(SITE_NAME)
                targetSite.AllowUnsafeUpdates = True

                Dim targetFolder As SPFolder = targetSite.GetFolder(FOLDER_NAME)

     

                Dim prop As New Hashtable
                prop.Add("タイトル", title) '←★この値は反映されない
                prop.Add("補足説明", notes) '←★この値は反映される

     

                Dim file As Byte() = GetFile(filename)

                Dim spf As SPFile = targetFolder.Files.Add(filename, file, prop, True)
                'spf.Title = title '←★Title プロパティが ReadOnly なので修正できない。

     

    targetFolder.Files.Add の戻り値の SPFile に Title プロパティがありますが、ReadOnly で設定できません。

    また、以下のコードを試してみましたが、成果がありませんでした。

     

                prop.Add("Title", title)
                prop.Add("Caption", title)

     

    targetFolder.Files.Add メソッドに対して Title を設定するオーバーロードも見つかりません。

     

    「タイトル」プロパティに対して、入力値を設定する方法や情報をご存知の方、ご教授ください。

    どうぞよろしくお願いいたします。

     

    ■開発環境

    Windows Server 2003 Standard SP2

    Microsoft Office SharePoint Server 2007(MOSS) 評価版

    VisualStudio2005 SP1(VB.NET)

    2008年11月12日 3:16

回答

  • すでに不要かもしれませんが、APIを調べたところ

    SPFIle.Itemで、ファイルに対応するリストアイテムが取得できるようです。

     

    「SPFileクラス->SPFileプロパティ->Itemプロパティ」

    http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spfile.item.aspx

     

    なので

     

      SPFile file = ...;

      file.Item[SPBuiltInFieldId.Title] = "タイトル";

      file.Item.Update();

     

    で、ドキュメントライブラリに表示されているアイテムのタイトルが変更できそうです。

    #申し訳ありませんが、動作は未確認です。

    2008年12月2日 23:47

すべての返信

  • propに指定したキー名の"Title"の部分にGuidを指定したら動作しないでしょうか?

     

    WSSの場合、リストの列に対してGuidを割りあてて管理しており

    既存の列では、SPBuiltInFieldIdと言うクラスにその値が設定されているようです。

    例えば、"タイトル"の設定ならば

     

      prop.Add(SPBuiltInFieldId.Title, title)

     

    としたら動作しないでしょうか?

    #VBは詳しくないので、表記が間違っていたらごめんなさい。

    2008年11月26日 7:21
  • nakayama.hiroshi さま

    ご返信ありがとうございました。

    試してみたのですが、うまくいきませんでした。

     

    prop.Add(SPBuiltInFieldId.Title, title)

     →エラーは出ないが、ファイルが反映されない

    prop.Add(SPBuiltInFieldId.Title.ToString, title)

     →ファイルは登録されるが、タイトルには反映されない

     

    尚、試しに、

    prop.Add("補足説明", SPBuiltInFieldId.Title.ToString)

    としてみると、GUIDが文字列として入ることが確認できました。

     

    ただ、重要なヒントを頂いたような気がいたしますので、

    また折をみて試してみたいと思います。

     

    #実は顧客と調整しまして、結局独自列を作成する事になりました。

     

    ありがとうございました。ひとまずお礼まで。

    2008年11月28日 3:11
  • すでに不要かもしれませんが、APIを調べたところ

    SPFIle.Itemで、ファイルに対応するリストアイテムが取得できるようです。

     

    「SPFileクラス->SPFileプロパティ->Itemプロパティ」

    http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spfile.item.aspx

     

    なので

     

      SPFile file = ...;

      file.Item[SPBuiltInFieldId.Title] = "タイトル";

      file.Item.Update();

     

    で、ドキュメントライブラリに表示されているアイテムのタイトルが変更できそうです。

    #申し訳ありませんが、動作は未確認です。

    2008年12月2日 23:47
  • nakayama.hiroshi さま

    たびたびのご回答ありがとうございました。

     

    教えて頂いた対応で、正しく登録する事を確認できました!

     

    ありがとうございます。今後に生かしたいと思います。

    2008年12月3日 2:06