- PR -

.NET TIPSのDataGridコントロールのヘッダーを結合するには?で…

1
投稿者投稿内容
Lyn
会議室デビュー日: 2002/07/05
投稿数: 4
投稿日時: 2003-12-09 22:24
DataGridコントロールのヘッダーを結合するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/091joinheader/joinheader.html

で紹介されている方法でセルの結合は出来るのですが、、、
Page_Load部分で
if(!IsPostBack) xxx.DataBind();
として、ポストバックの場合は無駄にバインドしないようにすると
削除したセルが自動で復帰してるらしく
結合分+削除したはずのセルが出力されて
結合してない、そのほかの行に空白が出来てしまうようです。
なので、
e.Item.Cells.RemoveAt(1);
e.Item.Cells.RemoveAt(1);
よりも
e.Item.Cells[1].Visible = false;
e.Item.Cells[2].Visible = false;
とした方がいいかもしれません。
(ViewStateを保持してる場合だけかもしれませんが…)
遠藤@DA
@ITエディタ
会議室デビュー日: 2001/08/25
投稿数: 60
お住まい・勤務地: Tokyo
投稿日時: 2003-12-17 19:10
@ITエディタ 遠藤です。

>Page_Load部分で
>if(!IsPostBack) xxx.DataBind();
>として、ポストバックの場合は無駄にバインドしないようにすると
>削除したセルが自動で復帰してるらしく
>結合分+削除したはずのセルが出力されて
>結合してない、そのほかの行に空白が出来てしまうようです。

viewstateを無効にしないで、ポストバックした時は
おっしゃるとおり確かにセルが復活していますね。

>なので、
>e.Item.Cells.RemoveAt(1);
>e.Item.Cells.RemoveAt(1);
>よりも
>e.Item.Cells[1].Visible = false;
>e.Item.Cells[2].Visible = false;
>とした方がいいかもしれません。

この方法はよいですね。年末の時間が空いたときにでも
記事の方にフィードバックさせていただきます。

Lynさんご指摘ありがとうございました。
今後ともどうぞよろしくお願いします。

#ちなみにサンプルでEnableViewState="false"かつ
#IsPostBack判定ナシとしているのは、コードを
#シンプル&軽量にするためで特に他意はありません。
#が、確認が足りませんでしたね。

1

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