ビューで列幅を指定するちょいテク

実にくだらない方法ではあるのですが、最近、これが役立つ機会が増えてきたので、ここでご紹介しておきます─笑わないでくださいね?(笑)

SharePoint は、ビューにおいて、列の横幅を指定することができません。また、行を折り返すか、折り返さないかを指定することもできません。丁度、TD に WIDTH を指定していない WIDTH=100% の TABLE 的な感じです(判ります?)

ですから、画面幅に余裕があるうちはまだ良いのですが(逆に広すぎると中途半端に広がって、なんだか見にくいデザインになったりもしますが)、列が増えて表示幅が足りなくなると、中の値を問答無用で折り返して表示してしまいます。

例えばこんな感じです。

電話番号一覧ですが、これでは見にくいことこの上ありません。しかし、ある工夫をすると、これを一行に収めることが可能です。

こんな感じ。実はこれ、列名の後ろに全角スペースを入れただけです(苦笑)

SharePoint のお作法として、列名は絶対に折り返しません。そのため、電話番号のようにある程度列幅が決まっているものなら、その値よりも長い列名にしてしまえば、結果的に一行で表示できる訳です。お手軽ですが、リストでもライブラリでも利用でき、以外に活用範囲が広いです。

ただし、DispForm.aspx?ID=xxx でアイテム開いた時の列名も折り返さないので、あまり幅を取ってしまうと、やたらと見難いフォームになってしまいますので、ご注意下さい。

また、Infopath(フォームライブラリ)ではこの方法は使えません。発行する際に、全角でも半角でも、スペースは排除されてしまうためです。

ただ、ようは幅を増やせるなら何でも良いわけで。「列名xxxxxxxxxxxxxxxxx」「列名-----------------」など、やりようはあります。私は、あまり目立たない「列名……………..」 を良く使います。

次バージョンでは、ぜひ基本機能で「列幅指定」と「折り返さない指定」「最大列幅指定」が出来るようになって欲しいものです。

ビューを改行させない 改行禁止 Web パーツ
ビューで列幅を指定するちょいテク
リストアイテムを見やすくしたい(1)
リストアイテムを見やすくしたい(2)


これまでのコメント

  1. mamao2 より:

    AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
    私も列幅指定できないことを知って驚きました。
    普通指定したくなりますよね。

    生成されたHTMLソ\ースを見ればわかるのですが、
    ヘッダー(列名)が折り返ししないのはtdタグにnowrapの指定が入っているからですね。
    ところが明細行にはnowrapが入っていませんでした。
    これが現在のSharepointの仕様なのでしょう。

    列名にブランクを入れる以外に、こんな対応でもできるのでご紹介です。

    対象のビューを置いているページに「コンテンツエディタWebパーツ」を追加します。
    そのパーツのソ\ースエディタを開き、以下のHTMLを書きます。
    <style>td{white-space: nowrap;}</style>

    これで明細行もnowrapの指定が入りますので勝手な改行が入らなくなります。
    ただし問題もあります。
    この指定をするとページ全体に影響します。
    対象のページに他のtdタグがあった場合はそこにまで影響しますので注意です。

    フォームライブラリでもできるかは未確認です。

    「コンテンツエディタWebパーツ」は通常機能\でできないことをHTMLレベルで操作できるのでとても便利ですね。
    でも、どのページにどんなのを埋め込んだかわからなくなりますから、
    これで編集するのは最終手段にしています。

    (結果、最終手段だらけなのは秘密です)

  2. saruhiko より:

    AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    な、なるほど〜!!!
    いや、目から鱗です。@@
    貴重な情報、ありがとうございます!

    >ただし問題もあります。
    >この指定をするとページ全体に影響します。
    >対象のページに他のtdタグがあった場合は
    >そこにまで影響しますので注意です。

    あらためてリストのソ\ースを読んでみたのですが、デフォルト列(タイトルや作成者等)には ms-vb 。カスタム列には ms-vb2 の Class が指定されていますね。
    とすると、

    <style>
    td.ms-vb{white-space: nowrap;}
    td.ms-vb2{white-space: nowrap;}
    </style>

    にすれば、影響範囲を限定できませんかね?
    いっそ、代替CSSに仕込んでしまう、という方法もありますね…。

    ちょっと研究してみます!

login

Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9