2008年11月17日

ASP.NET 取得したデータ内に改行がある場合、GridViewで改行されない。

 ASP.NETで使用するGridViewですが、データ内にある改行はスペースで表示されてしまいます。

 データベースなどに登録する際に、テキストボックスなどをMultiLineにしていると、改行したデータを登録することが出来ますが、そのデータを取得し、GridViewなどに反映させると、改行コードがスペースになってしまいます。

 Web上では基本的に改行は<br>タグを使用しますので、改行コードを変更する必要があるんですね。

 取得したデータをラベルに表示させる場合の例は、「ASP.NET 取得したデータ内に改行があっても、ラベルに表示したときにはスペースになってしまう。」でもご説明したとおりですが、GridViewになると、簡単には行きそうにありません。

 では、その方法は。。。。

>>>


>>>

 例えば、下図のようなコントロールを配置させたとします。
<図>
sample013-1.JPG

 取得するデータは、indexと名前のテーブルとします。

index  name
---------------
1    鈴木
2    佐藤
3    武田
・    ・
・    ・
・    ・
---------------

Accessのデータベースへのアクセス方法などは、「ASP.NET アクセスデータにアクセスする(コーディング)」を参考にしてみてください。


設定は以下。

1:GridViewのname列をTemplateFieldに変換します。
 GridViewを選択し、右の▼をクリックし、「列の編集」をクリックします。
sample013-2.JPG
 name列を選択し、上図の「このフィールドをTemplateFieldに変換します。」をクリックします。

 [OK]をクリックして閉じます。

2:GridViewのPreRenderイベントに、以下のコードを記述します。
<コード>
-----------------------------------------------
 Private Sub GridView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.PreRender

  For Each row As TableRow In DirectCast(sender, GridView).Rows

   For Each tbCell As TableCell In row.Cells

    For Each ctrl As Control In tbCell.Controls

     If TypeOf ctrl Is Label Then

      DirectCast(ctrl, Label).Text = DirectCast(ctrl, Label).Text.Replace(vbCrLf, "<br>")

     End If

    Next

   Next

  Next

 End Sub
-----------------------------------------------
 このコードは、GridView1がHTMLに変換される前に、行、列、とたどっていきます。
 列の中にLabelコントロールがあれば、その中のテキストデータの改行コードをbrタグに置き換えます。
 改行コードは、vbCrLf関数を使用しています。

 結果は以下の図を参考にしてみてください。
<図>
sample013-3.JPG



posted by Debring at 20:12 | Comment(0) | TrackBack(0) | ASP.NET GridView
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。