locked
ドキュメントライブラリの列:種類 (ドキュメントにリンクされたアイコン) について RRS feed

  • 質問

  • ドキュメントライブラリで、ドキュメントを追加すれば、該当のアイコンが[種類 (ドキュメントにリンクされたアイコン)]に表示されますが、
    ドキュメントにリンクされずに、アイコンだけ表示させたいのですが、どのような方法がありますでしょうか?
    2010年3月5日 1:53

回答

  • 基本は、皆さんが上で指摘されているとおりです。
    もっとも現実的なアプローチはコンテンツのクエリWebパーツでカスタムスタイルを
    適用することですが、これはあくまでWebパーツですので、通常のライブラリ内でも…
    となると無理があります。

    JavaScriptでAタグを無効化する方法もあると思いますが、肝心のAタグが
    固有のIDやCLASSを持っていません。
    かろうじて、親のTDに ms-vb-icons が指定されていますので、これを拾って、
    その子要素をたどって…と結構難しいと思います。

    一番簡単なのは、ワークフロー機能を利用することです。

    ファイルタイプに応じたアイコンのURLを動的にとれるかどうかは判りませんが、
    (Designerでは無理。しかしVisualStudioなら出来そうな気がします)
    少なくとも拡張子は確実にとれますので、それを条件に、対応したアイコンを
    表示させればよいでしょう。
    既定の「種類」列は表示させません。

    こんな感じになります。
    判りやすいように、A タグにスタイルを適用して、太い赤線をつけました。
    type 列のアイコンにはリンクが貼られていません。


    基本的な方法はこちらと同様ですので、ご覧下さい。
    http://sharepoint.boo.jp/index.php?e=368

    リンク列(この例ではtype)を毎回つくるのは面倒ですので、
    コンテンツタイプに設定して、かつ非表示にしておくと良いでしょう。

    ワークフローについても、VisualStudioでテンプレートとして発行して、
    やはりコンテンツタイプに紐付けておくことをお勧めします。

    ただし、ドキュメントライブラリにこの手の「更新」WFを適用する場合、
    更新の競合を回避するため、即時動作ではなく、数分間待機するなど設計上の対策が必要です。

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



    saruhiko
    2010年3月6日 4:15

すべての返信

  • アイコンのみ表示する意図が判らないのでコメントしずらいのですが、、、

    アイコンファイルのURLは、
    http://<ServerName>/sites/<Sitename>/_layouts/images/icxddoc.gif
    のようになっています。
    ファイルの実体は、
    "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\IMAGES\ICXDDOC.GIF"
    となっているので、コンテンツエディタWebパーツなどでアイコンだけを表示させる事は可能です。

    どこのサイトから参照しても、同じファイルの実体を参照しています。
    画像を差表示するには、画像ファイルにアクセスするサイトへアクセスする権限が必要です。
    2010年3月5日 4:16
  • ご回答ありがとうございます。

    アイコンのみ表示したいという意図は、通常ですとドキュメントをアップロードすると、関連付けされたアイコンがファイル名の左側に表示されます。
    また、アイコンをクリックすれば、そのドキュメントを開くことができます。

    目的としては、アイコンをクリックしてドキュメントを開く動作をやめたく、アイコンは表示されているだけ(アイコンをクリックして無反応)としたいのですが、方法はありますでしょうか?
    2010年3月5日 8:02
  • アイコンは [種類(ドキュメントにリンクされたアイコン)] という型しかないようですね。
    なので、残念ながら無理そうですね。

    /Fumio Mizobata

    2010年3月5日 18:35
  • 基本は、皆さんが上で指摘されているとおりです。
    もっとも現実的なアプローチはコンテンツのクエリWebパーツでカスタムスタイルを
    適用することですが、これはあくまでWebパーツですので、通常のライブラリ内でも…
    となると無理があります。

    JavaScriptでAタグを無効化する方法もあると思いますが、肝心のAタグが
    固有のIDやCLASSを持っていません。
    かろうじて、親のTDに ms-vb-icons が指定されていますので、これを拾って、
    その子要素をたどって…と結構難しいと思います。

    一番簡単なのは、ワークフロー機能を利用することです。

    ファイルタイプに応じたアイコンのURLを動的にとれるかどうかは判りませんが、
    (Designerでは無理。しかしVisualStudioなら出来そうな気がします)
    少なくとも拡張子は確実にとれますので、それを条件に、対応したアイコンを
    表示させればよいでしょう。
    既定の「種類」列は表示させません。

    こんな感じになります。
    判りやすいように、A タグにスタイルを適用して、太い赤線をつけました。
    type 列のアイコンにはリンクが貼られていません。


    基本的な方法はこちらと同様ですので、ご覧下さい。
    http://sharepoint.boo.jp/index.php?e=368

    リンク列(この例ではtype)を毎回つくるのは面倒ですので、
    コンテンツタイプに設定して、かつ非表示にしておくと良いでしょう。

    ワークフローについても、VisualStudioでテンプレートとして発行して、
    やはりコンテンツタイプに紐付けておくことをお勧めします。

    ただし、ドキュメントライブラリにこの手の「更新」WFを適用する場合、
    更新の競合を回避するため、即時動作ではなく、数分間待機するなど設計上の対策が必要です。

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



    saruhiko
    2010年3月6日 4:15