- PR -

DataGridの削除ボタン

1
投稿者投稿内容
damepg
大ベテラン
会議室デビュー日: 2003/03/19
投稿数: 229
お住まい・勤務地: 東京都内
投稿日時: 2004-12-14 18:33
C#でWeb開発をしています。

DataGridのプロパティビルダにボタン列の削除ボタンを追加しました。
この削除ボタンをDataGrid1_ItemCreatedのイベントが発生したときに
下記のように削除確認の確認ダイアログを表示することを考えています。
下記のFindControlで削除ボタンが認識されません。
どうしてでしょうか?
よろしくお願いします。


Button objButtonDelete1 = e.Item.Cells[11].FindControl("PushButton") as System.Web.UI.WebControls.Button;

if (objButtonDelete1 != null)
{
objButtonDelete1.Attributes["OnClick"] = @"javascript:confirm();";
}
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-15 16:15
こんにちは。C#でなくVB.NETで同じ事をやっていますが、DataGrid1_ItemDataBoundでやってみたらどうでしょう?あと、FindControlを使う必要はないですよ。下記に参考になればと思い、VBでのプログラムを書いておきます。C#はちょっと自信ないので。。。すいません。

コード:

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

Dim lbtnButton As Button

If ((e.Item.ItemType = ListItemType.EditItem) Or (e.Item.ItemType = ListItemType.AlternatingItem) Or (e.Item.ItemType = ListItemType.Item)) Then

lbtnButton = CType(e.Item.Cells(11).Controls(0), Button)
lbtnButton.Attributes("onclick") = "if (!confirm('削除しますか?')){return false;} "
End If

End Sub



[ メッセージ編集済み 編集者: SE卵 編集日時 2004-12-15 16:19 ]
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-15 16:27
引用:

FindControlを使う必要はないですよ


ですが、
引用:

コード:
        lbtnButton = CType(e.Item.Cells(11).Controls(0), Button)




これだとセル内の最初のコントロールがボタンだという仮定がありますね。
テンプレート列を使用した場合はセル内部に構造が書けるので、idで検索したほうが変更に強いのではないかと思います。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-15 16:59
こんにちは。確かににしざきさんの言う通りですね。えーっとそうするとですね、下記のような方法ではいかがでしょう???間違っていたらすいません。

コード:
lbtnButton = CType(DataGrid1.Items(e.Item.ItemIndex).FindControl("btnID"), Button)



変更への柔軟性を考えると、IDで検索すべきですね。勉強になります。
1

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