- PR -

GridViewのヘッダに動的にボタンを追加した後のイベントについて

1
投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2008-02-04 18:38
いつもお世話になります。
現在ASP.net(VB2005)にてWEBサイトの開発を行っています。

現在、下記のようにGridViewのヘッダに動的にボタンを追加しています。
コード:
Dim button As New Button
button.Text = "変更"
button.CommandName = "BtnUpdate"
Me.GridView1.HeaderRow.Cells(0).Controls.Add(button)


その追加したボタンが押された際に処理を行いたいのですが、うまくいきません。

RowCommandイベントでイベントを取得しようとしたのですが、RowCommandイベントはヘッダのボタンをクリックしても実行されないようです。
コード:
↓※イベントに入りません。
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
    If e.CommandName = "BtnUpdate" Then

    End If
End Sub


ヘッダに作成したボタンのクリックイベントの取得方法についてどうぞご教授下さい。
THREE-ONE
会議室デビュー日: 2006/04/06
投稿数: 6
投稿日時: 2008-02-04 20:39
ボタンに直接クリックイベント設定するんじゃダメなんですか?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-02-05 08:54
ここのサンプルを参考にしたらどうでしょうか。

http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.datacontrolrowtype(VS.80).aspx
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-02-05 10:00
ボタンの追加はどのタイミングで行われているのでしょう?
もしかして、クリック後にボタンが消えていたりはしませんか?

この辺も参考になるかもしれません。
http://support.microsoft.com/kb/317515/ja
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2008-02-05 11:45
THREE-ONEさん、Accessさん、RapidExpressさん返信ありがとうございます。
皆様のおかげでヘッダのイベントを取得することができました。
本当のソースは長いのでテスト的に作成したソースをあげておきます。
本当にありがとうございました。
コード:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim table As DataTable = New DataTable("TestTable")
        Dim column As DataColumn
        column = New DataColumn()
        column.DataType = System.Type.GetType("System.String")
        column.ColumnName = "列1"
        column.Caption = "列1"
        column.ReadOnly = False
        table.Columns.Add(column)

        column = New DataColumn()
        column.DataType = System.Type.GetType("System.String")
        column.ColumnName = "列2"
        column.Caption = "列2"
        column.ReadOnly = False
        table.Columns.Add(column)
        '列を追加する
        Dim row As DataRow
        For i As Integer = 0 To 10
            row = table.NewRow()
            row("列1") = i
            row("列2") = i
            table.Rows.Add(row)
        Next
        Me.GridView1.DataSource = table
        Me.GridView1.DataBind()
        AddHandler GridView1.RowCommand, AddressOf CustomersGridView_RowCommand
        'AddHandler GridView1.RowCreated, AddressOf CustomersGridView_RowCreated
        'ヘッダにボタンを追加する
        Dim addColumn As New Button
        addColumn.CommandName = "Add1"
        addColumn.Text = "ボタン"
        Me.GridView1.HeaderRow.Cells(0).Controls.Add(addColumn)
        Dim addcolumn1 As New Button
        addcolumn1.CommandName = "Add2"
        addcolumn1.Text = "ボタン"
        Me.GridView1.HeaderRow.Cells(1).Controls.Add(addcolumn1)
    End Sub
    Sub CustomersGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
        If e.CommandName = "Add1" Then
        End If
        If e.CommandName = "Add2" Then
        End If
    End Sub


todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2008-02-05 12:11
引用:

カタナさんの書き込み (2008-02-05 11:45) より:
コード:
        Dim addColumn As New Button
        addColumn.CommandName = "Add1"
        addColumn.Text = "ボタン"
        Me.GridView1.HeaderRow.Cells(0).Controls.Add(addColumn)





最初のコードと特に変わっていませんが、
何が問題だったのでしょうか?
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2008-02-05 13:06
todoさん返信ありがとうございます。
下記の1文を追加しました。

AddHandler GridView1.RowCommand, AddressOf CustomersGridView_RowCommand
1

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