複数行のデータを表示/編集できるGridView

データに改行している箇所があっても、標準のGridViewではその改行は無視されて表示されてしまいます。これは、HTMLが改行コードを無視するためなので、改行コードをbrタグに置き換えてあげる必要があります。
GridViewにそのような機能を追加してみます。

ここではデータベースに主キーとなるidと文字列testDataだけのテーブルを作成しています。また、あらかじめいくつかのデータをこのテーブル内に作成しておきます。
データベースエクスプローラから作成したテーブルをページにドラッグ アンド ドロップすると、GirdView1とSqlDataSource1が作成されます。GridView1の「ページングを有効にする」と「編集を有効にする」にチェックを入れます。

GridView1のtestDataフィールドをTemplateFieldに変換します。テンプレートの編集でtestDataフィールドのEditItemTemplateを表示し、この中に存在しているTextBoxのTextModeプロパティをMultiLineに設定します。必要であれば、Rowsプロパティの行数も調整します。

テンプレートの編集を終了します。
GridView1のプロパティウィンドウにイベントを表示し、PreRenderイベントをダブルクリックします。GridView1_PreRenderメソッドが自動的に生成されるので、以下の通りに記述します。

    protected void GridView1_PreRender(object sender, EventArgs e)
    {
        foreach (TableRow r in ((GridView)sender).Rows)
            foreach (TableCell tc in r.Cells)
                foreach (Control c in tc.Controls)
                    if (c is Label)
                        ((Label)c).Text = ((Label)c).Text.Replace(Environment.NewLine, "<br />");
    }

ここではGridView1がHTMLに変換される(レンダリング)前に自身が持つ行、列、とたどっていって、列の中にLabelコントロールがあったらその中のテキストデータの改行コード(Environment.NewLine)をbrタグに置き換える、という処理を行っています。
テンプレートの編集でItemTemplateをLabel以外のものに変更しているような場合はこのコードをそれにあわせて修正する必要があります。

デバッグを開始し、GridViewが改行を含んだデータを正しく表示していること、またそのデータを更新できることを確認してください。


◆ この記事についてのご意見、ご質問は以下のフォーラムにお願いします ◆
http://dotnetfan.org/forums/667/ShowPost.aspx

公開 21-04-2006 10:16 投稿者 ono
カテゴリ:

コメント

コメントはありません
この投稿に対する新規コメントはできません
SkinName:iroha_Blog2
Powered by Community Server, by Telligent Systems