- PR -

ヘッダーに行を挿入した後に編集する方法

1
投稿者投稿内容
がんばり屋
会議室デビュー日: 2003/12/02
投稿数: 12
投稿日時: 2004-10-28 16:08
VB.NETを使ってASP.NET Webアプリケーションを作成しています。

以下のようにヘッダーに行を追加しています。

[    ][ DDD ] <--挿入したヘッダー行
[A][B][D][D][D] <--元のヘッダー行


開閉ボタンを押すことにより、
[B]を展開できるようにしています。

●閉じているとき
[    ][ DDD ] <--挿入したヘッダー行
[A][B][D][D][D] <--元のヘッダー行

●展開したとき
[        ][ DDD ] <--挿入したヘッダー行
[A][B][b][b][D][D][D] <--元のヘッダー行


この処理をItemCreatedイベントを使わずに実行していたのですが、
ItemCreatedイベントを使った方が綺麗なので変更しようと思っています。

そこで、一度挿入したヘッダー行のColumnSpanを変更したいのですが、
どのように参照してよいのかわかりません。
ご教授いただけないでしょうか。よろしくお願いします。


--ヘッダー行挿入------------------------------------------------------------
Private Sub DtGrid_ItemCreated(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
Handles DtGrid.ItemCreated

 If e.Item.ItemType = ListItemType.Header Then
   Dim newCell1 As TableCell = New TableCell
   Dim newCell2 As TableCell = New TableCell
   Dim newHeader As DataGridItem =
    New DataGridItem(-1, -1, ListItemType.AlternatingItem)

   newCell1.ColumnSpan = 2
   newCell2.ColumnSpan = 3 '[DDD]に当たる部分
   newCell1.Text = ""
   newCell2.Text = "DDD"

   newHeader.Cells.Add(newCell1)
   newHeader.Cells.Add(newCell2)
   newHeader.Cells(1).HorizontalAlign = HorizontalAlign.Center

   'ページ機能もありますので挿入する場所は1にしております。
   DtGrid.Controls(0).Controls.AddAt(1, newHeader)
 End If
End Sub

[ メッセージ編集済み 編集者: がんばり屋 編集日時 2004-10-28 16:12 ]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-10-28 16:25
newHeaderをprivateな変数に覚えておけばよいのでは?
がんばり屋
会議室デビュー日: 2003/12/02
投稿数: 12
投稿日時: 2004-10-28 16:33
返答ありがとうございます。

フォームにラベルを作成しております。
開閉ボタンを押したイベントで結合する列数を入力しています。

しかし開閉ボタンを押したイベントではDatagridにバインドしておりませんので
ItemCreatedイベントは実行されていないようです。
そこで、既に挿入されたヘッダーの一つ目のセルのColumnSpanを
 展開時なら  ColumnSpan = 4
 閉じる時なら ColumnSpan = 2
に変更したいのです。
がんばり屋
会議室デビュー日: 2003/12/02
投稿数: 12
投稿日時: 2004-10-28 16:42
すみません、間違いです。↓
 >しかし開閉ボタンを押したイベントではDatagridにバインドしておりませんので
 >ItemCreatedイベントは実行されていないようです。


開閉ボタンを押した時のイベントはItemCreatedイベントが実行された後に
実行されますので、ColumnSpanを変更する必要があるのです。
ColumnSpanに設定する値はフォームに作成しているラベルに入力しておりますので
それを代入したいのですが、方法がわかりません。
がんばり屋
会議室デビュー日: 2003/12/02
投稿数: 12
投稿日時: 2004-10-29 14:47
トレースを有効にして色々と試していると解決できました。
お騒がせして申し訳ありません。。。

--------------------------------------------------
 '挿入したヘッダーの再設定
   Dim cell1 As TableCell = DtGrid.Controls(0).Controls(1).Controls(0)

     cell1.ColumnSpan = 4 '<--展開した場合(閉じている場合は2)
     
1

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