2010/02/15(Mon) 21:52:40 編集(投稿者)
■No46965 (しょう さん) に返信
> ・初期値から値を変更→ButtonFieldのTextをnullまたはブランクにしています。(ボタ
> ンを押せなくするために)
> ・初期値から値を変更→BoundFieldのTextをnullまたはブランクにしています。(みえ
> なくするため)
ButtonField と BoundField の Text プロパティにはどの様にしてブランクをセットされ
ているのでしょうか。
BoundField に Text プロパティがないことに鑑みると
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Text = "";
}
こんな感じでしょうか。
この場合 TableCell の Text プロパティに値がセットされます。
> GridViewが再作成されているわけでは無さそうです。なぜなら OnRowDataBoundはパネ
> ル開閉では実行されていません。
そうすると原因はポストバック時における ViewState からの値の復元にありそうです。
ViewState からの値復元時に TableCell の Text プロパティの値が ButtonField の
Text プロパティの値で上書きされるのかなと思ったり思わなかったりです。
TableCell から ButtonField を取得して Text プロパティをセットしてみてはいかがで
しょうか。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataControlFieldCell dataControlFieldCell = e.Row.Cells[0] as DataControlFieldCell;
ButtonField buttonField = dataControlFieldCell.ContainingField as ButtonField;
buttonField.Text = "";
}