5

私はいくつかのフィールドを持つ GridView を持っています。そのうちの 1 つは、次のように非常に広い値を持つ可能性があります。

あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

そういうのが現場にあるならラッピングして欲しい。

50 文字ごとにコードに文字を簡単に挿入できます...しかし、どの文字ですか? \r\nスペースなどを使用すると、設定が折り返されない場合があり (別の行の 50 文字が広いため)、次のような結果が得られます。

mmmmmmmmmm
mmmmmm
llllllllll llllllllll llll

それらのスペースが表示されないようにします。可能であれば行を折り返して、それ以外の場合は何も表示しないようにします。

mmmmmmmmmmmmmmmmllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
_
_

また、可能であれば HtmlEncode有効にしたままにします。これを行う方法はありますか?

4

4 に答える 4

5

ItemStyle-Wrap="true" ItemStyle-Width="100" は、スペースのない 1 つの長い単語では機能しません。

解決策を見つけました:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Cells[1].Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
                }
            }

ここで、Cells[1] はラップする列です。

于 2013-05-31T05:34:04.537 に答える
4

これらのCSSの行をクラスに貼り付け、そのクラスをグリッドアイテムに貼り付けます

white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
white-space: -pre-wrap; /* Opera 4 - 6 */ 
white-space: -o-pre-wrap; /* Opera 7 */ 
white-space: pre-wrap; /* CSS3 */ 
word-wrap: break-word; /* IE 5.5+ */
于 2008-12-03T22:01:51.070 に答える
0

ここでいくつかのことができます。

1つのオプションは、問題の列をTemplateColumnに変更し、その中にdivを配置して、スクロールバーを生成する機能を使用することです。私は本当にこれに反対することをお勧めします。

CRLF(\ r \ n)を使用する場合は、それをPREタグにラップする必要があり、フォントファクトをモノスペースフォント(Courierなど)に変更して、50文字が常に同じ長さ。

HTMLソリューションが必要な場合は、テキストの適切な場所にBRタグを挿入するだけです。

ここで、文字列の長さをチェックしていること(マジックナンバーの長さよりも大きいことを確認してください)、およびスペースが含まれていないことも確認する必要があります(スペースは折り返しを許可するため) 、CRLFまたはBRのいずれかを挿入する前。

于 2008-12-03T21:56:26.137 に答える
0

GridView では、次のテンプレート フィールド プロパティを使用できます。

ItemStyle-Wrap="true" ItemStyle-Width="100"

幅を設定する必要があります。そうしないと、テキストが折り返されません。

于 2011-08-05T15:04:57.273 に答える