- PR -

【ASP.NET】DataGridのイベントが発生しない

1
投稿者投稿内容
otaka
会議室デビュー日: 2004/05/13
投稿数: 5
投稿日時: 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++ ;
}

何かご存知の方は、教えてください。
よろしくお願いします。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-05-26 16:58
同じ問題かも
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8549&forum=7&2
otaka
会議室デビュー日: 2004/05/13
投稿数: 5
投稿日時: 2004-05-26 18:13
todoさんへ

レスありがとうございます。
この方法ですと、ページングの処理ができなくなってしまう。
PageIndexChanged後に、ItemCreatedイベントは走りませんよね。
(間違っていたらごめんなさい)

ItemDataBoundイベント、SelectedIndexChangedイベントは発生するのに・・・
otaka
会議室デビュー日: 2004/05/13
投稿数: 5
投稿日時: 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

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