- - PR -
【ASP.NET】DataGridのイベントが発生しない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-05-26 16:02
DataGridのヘッダーを複数行にする処理を作成しています。
見た目はうまくいっているのですが、グリッドの最終行だけ ItemDataBoundイベント、SelectedIndexChangedイベントが発生しません。 //ヘッダーを複数行にしているソースです。 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { //ヘッダーの追加は1回のみ if(item_bound == 0) { //ヘッダーを複数行にする処理 DataGridItem row = new DataGridItem(-1, -1, ListItemType.Header); TableCell cell = null; for(int ii = 0; ii < 6; ii++) { cell = new TableCell(); cell.RowSpan = 2; cell.Font.Bold = true; cell.Text = Header[ii]; if (e.Item.ItemType == ListItemType.Header) { e.Item.Cells.RemoveAt(0); } row.Cells.Add(cell); } cell = new TableCell(); cell.ColumnSpan = 2; cell.Font.Bold = true; cell.Text = "グループ"; row.Cells.Add(cell); cell = new TableCell(); cell.ColumnSpan = 2; cell.ForeColor = System.Drawing.Color.Green; cell.Text = "ドメイン"; row.Cells.Add(cell); // グリッドにアイテムコントロールを追加する DataGrid1.Controls[0].Controls.AddAt(1,row); } item_bound++ ; } 何かご存知の方は、教えてください。 よろしくお願いします。 |
|
投稿日時: 2004-05-26 16:58
同じ問題かも
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8549&forum=7&2 |
|
投稿日時: 2004-05-26 18:13
todoさんへ
レスありがとうございます。 この方法ですと、ページングの処理ができなくなってしまう。 PageIndexChanged後に、ItemCreatedイベントは走りませんよね。 (間違っていたらごめんなさい) ItemDataBoundイベント、SelectedIndexChangedイベントは発生するのに・・・ |
|
投稿日時: 2004-05-27 10:07
【自己回答】
ItemCreatedイベントにすると、ページング処理ができないと書いてしまいましたが、 いろいろ試しているうちにできるようになりました。 お騒がせして申し訳ありません。 前提条件として、ページング処理は許可してあります。 <変更前> private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { // ヘッダーの追加は1回のみ if(item_bound == 0) { //ヘッダーを複数行にする処理 DataGridItem row = new DataGridItem(-1, -1, ListItemType.Header); TableCell cell = null; for(int ii = 0; ii < 6; ii++) { cell = new TableCell(); cell.RowSpan = 2; cell.Font.Bold = true; cell.Text = Header[ii]; if (e.Item.ItemType == ListItemType.Header) { e.Item.Cells.RemoveAt(0); } row.Cells.Add(cell); } cell = new TableCell(); cell.ColumnSpan = 2; cell.Font.Bold = true; cell.Text = "グループ"; row.Cells.Add(cell); cell = new TableCell(); cell.ColumnSpan = 2; cell.ForeColor = System.Drawing.Color.Green; cell.Text = "ドメイン"; row.Cells.Add(cell); // グリッドにアイテムコントロールを追加する DataGrid1.Controls[0].Controls.AddAt(0,row); } item_bound++ ; } <変更後> private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(item_create == 1) { row = new DataGridItem(-1, -1, ListItemType.Header); //ヘッダーを複数行にする処理 for(int ii = 0; ii < 6; ii++) { cell = new TableCell(); cell.RowSpan = 2; cell.Font.Bold = true; cell.Text = Header[ii]; if (e.Item.ItemType == ListItemType.Header) { e.Item.Cells.RemoveAt(0); } row.Cells.Add(cell); } cell = new TableCell(); cell.ColumnSpan = 2; cell.Font.Bold = true; cell.Text = "グループ"; row.Cells.Add(cell); cell = new TableCell(); cell.ColumnSpan = 2; cell.Font.Bold = true; cell.Text = "ドメイン"; row.Cells.Add(cell); // グリッドにアイテムコントロールを追加する DataGrid1.Controls[0].Controls.AddAt(1,row); } item_create++; } |
1