- PR -

DataGridの列幅固定

投稿者投稿内容
whc
会議室デビュー日: 2003/06/17
投稿数: 12
投稿日時: 2003-06-23 12:26
VB.NETにてWebApplicationを作成しています。
DataGridのプロパティビルダ-書式-列-幅で列幅を設定しています。
セル内で文字列を折り返すのチェックは外しています。
この状態で設定した列幅より長い文字列を表示しようとすると、
列幅の設定以上に表示してしまいます。
表示する文字列の長さに関わらず、列幅を固定する方法は無いでしょうか?
よろしくお願いします。

はぐれコ〜ギ〜
常連さん
会議室デビュー日: 2003/06/12
投稿数: 32
投稿日時: 2003-06-23 15:06
> この状態で設定した列幅より長い文字列を表示しようとすると、
> 列幅の設定以上に表示してしまいます。
 表示しようとしている列には半角英数文字で
かつ、列幅以上の長さになってしまう文字列は含まれていませんか?
HTML(IE?※曖昧ですいません。)では、半角英数字はスペースで1単語として認識するため
1行に表示しようとし、改行しない仕様になっていたかと思います。
=間にスペースが含まれていればその箇所で改行されます。
ちなみに全角文字は任意の箇所で改行されます。
Ex>
abcdefghijklmn
↓そのまま。
abcdefghijklmn

abcdef ghijklmn
↓ スペースで改行される。
abcdef
ghijklmn

上記のような状況の場合、文字列の長さに関わらず列幅を固定するのでしたら
プロパティビルダでセル内で文字列を折り返す設定にするしか方法は無いと思います。


[ メッセージ編集済み 編集者: はぐれコ〜ギ〜 編集日時 2003-06-23 15:09 ]
whc
会議室デビュー日: 2003/06/17
投稿数: 12
投稿日時: 2003-06-23 15:43
はぐれコ〜ギ〜さん、ありがとうございます。
今は例えば、列幅100pxの列に、どのような文字列が入っても
固定した列幅で表示したいのです。
半角英数や空白、漢字などいろいろ入って、文字数も様々です。

スペースを入れてみたら、表示する文字列が列幅を越えた時に
スペースで改行されました!
でも何故か、文字列を折り返す設定に関係なく折り返してくれてますが・・・
逆にスペースが無ければ、文字列を折り返す設定が有効になっていても
折り返してくれないみたいです。
DataGridって複雑ですね。
いし
常連さん
会議室デビュー日: 2003/04/15
投稿数: 27
投稿日時: 2003-06-23 15:57
DataGridというよりもHTMLとかそっちのほうの話だと思いますが、
スタイルに

word-break: break-all;

とすると単語の途中でも強制改行してくれるようです。
試したことがないので、本当にそうかどうかは分かりません。

IE5以降でのみ有効なようです。
whc
会議室デビュー日: 2003/06/17
投稿数: 12
投稿日時: 2003-06-23 16:11
いしさん、ありがとうございます。

word-break: break-all;

を試してみたら、文字列の内容に関わらず、列幅に合わせて改行してくれました。
DataGridじゃなくてHTMLの方の設定が必要なのですね。
HTMLに、列幅固定で、表示できない文字は切り取って表示とかあるのでしょうか?



5文字まで表示できる列幅に
1234567890
を表示しようとした場合に
12345
しか表示しないようにしたいです。
はぐれコ〜ギ〜
常連さん
会議室デビュー日: 2003/06/12
投稿数: 32
投稿日時: 2003-06-23 17:43
> HTMLに、列幅固定で、表示できない文字は切り取って表示とかあるのでしょうか?
 私の知る限りでは無いと思います。
自分で関数を用意し、表示する際に関数内で文字数を調整して表示・・・
と言った形で私は回避しています。


>いしさん
styleを使う手がありましたね。
とても参考になりました。ありがとうございますm(__)m
whc
会議室デビュー日: 2003/06/17
投稿数: 12
投稿日時: 2003-06-23 17:51
>私の知る限りでは無いと思います。
自分で関数を用意し、表示する際に関数内で文字数を調整して表示・・・
と言った形で私は回避しています。

そうですか、HTMLで楽に・・・はできないみたいですね。
選択された行のデータを他のことに使用したいので、
表示用として、文字列を切り捨てて表示する列、
文字列格納用として、見えない列を作成して対応してみます。

はぐれコ〜ギ〜さん、いしさん、
ありがとうございました。
これからもお願いします。
むらさめ
会議室デビュー日: 2003/06/20
投稿数: 8
投稿日時: 2003-06-24 10:52
こんにちは
DataGridで表示する列幅の固定ですが
私の行っている開発でも一度に沢山の列を表示させるために
列幅固定で列幅より長い文字を表示させるための以下のような対応をしました

@この対応をしたい列をテンプレート列にする
Aテンプレート列の編集で『ItemTemplate』のラベルをテキストボックスにする
Bテキストボックスのプロパティを設定する(編集不可、幅、MAXレングスなど)
  ↑
 ラベルっぽい感じにする
CDataBindingsプロパティでTextとToolTipにカスタム連結式を設定する
 『DataBinder.Eval(Container.DataItem, "FirstName")』こんな感じ

この対応でカーソルをあててスクロールすると見えていない文字を出せたり
マウスカーソルをその列の上に持っていくとTooltipが出たりできます。

まとはずれでした?




_________________


[ メッセージ編集済み 編集者: むらさめ 編集日時 2003-06-24 17:24 ]

スキルアップ/キャリアアップ(JOB@IT)