2017-06-09 34 views
1

asp GridViewのasp BoundFieldの内容に改行を表示する必要があります。私はもともと\ r \ nを持っていましたが、ページはこの行を完全に無視していました。 2番目の行は、改行を文字列に置き換えることでしたが、文字列内のどこにでもリテラルテキストが表示されました。私が技術的にやった最後のことはうまくいきました。要素のHTMLエンコーディングを "false"に設定してフィールドの文字列を入力することで実現しました。私がこのソリューションで問題となっているのは、これがセキュリティ上の懸念を引き起こす可能性があると聞きました。 HTMLのエンコーディングをfalseに設定せずに、これらのフィールドに改行を挿入するにはどうすればいいですか?HTML符号化をオフにしないでasp GridView BoundFieldに改行を正しく表示する方法

+1

htmlの改行は '\ r \ nではなく、 '
'です。 – VDWWD

+0

しかし、HTMLエンコード=偽がない限り、私のサイトは文字通り「
」と表示されます。 –

+0

GridViewからコードを表示できますか? – VDWWD

答えて

1

、HTMLの扱い改行、タブやスペースなどの一般的なホワイトスペース、およびレンダリングのために複数の空白文字を1つのスペースに縮小します。したがって、HTMLに改行を含めても、通常はテキストがブラウザに表示される方法には影響しません。このトピックの詳細と背景については、これまでのquestionを参照してください。非常に有益なコメントがあります。

ただし、テキストの改行をブラウザの改行としてレンダリングするには、HTMLエンコードをオフにしたり、セキュリティ上の懸念を招くことなく、純粋なCSSでこれを実現できます。 white-space CSS propertyは標準であり、長い間、すべての主要なブラウザでサポートされており、ブラウザに改行をそのまま表示するように指示することができます。下に示されているようにCSSスタイルを含めるようにASP.Net GridViewによって生成されたHTMLを変更

<ItemStyle>タグを使用することによって達成することができます。代わりにあなたもwhite-space: pre;を試みることができるwhite-space: pre-line;を使用しての

<style> 
    .preformatted 
    { 
     white-space: pre-line; 
    } 
</style> 

<asp:GridView runat="server" ...> 
    <Columns> 
     <asp:BoundField ...> 
      <ItemStyle CssClass="preformatted"/> 
     </asp:BoundField> 
    </Columns> 
</asp:GridView> 

が、これはとりテキストを十分な改行が含まれていない場合は、グリッドの列が広がりすぎる可能性があります。

+0

これは動作します。あなたの答えを受け入れる前に、なぜこれが機能するのか説明できますか?これがなければなぜうまくいかないのでしょうか?私は他のタイプの改行(
)を試しましたが、なぜaspxはデフォルトで何をすべきかを行うために余分な指示が必要ですか? –

+0

こんにちは@アダムそれは良い点です。私は、ホワイトスペースの扱いをカバーする特定の質問へのリンクを含めるように答えを修正しました。 – Rob

1

GridViewのRowDataBoundイベントで検索と置換ができます。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //find the boundfield cell 
     string cellValue = e.Row.Cells[0].Text; 

     //replace the encoded <br> with a real one and put the string back 
     e.Row.Cells[0].Text = cellValue.Replace("&lt;br /&gt;", "<br />"); 
    } 
} 

あなたは<br>のように、より多くのbrタイプを含めるように置き換える拡張する必要があり、<br/><BR>など

デフォルトで
関連する問題