2009-06-02 11 views
1

プログラムで作成したグリッド内にボタンがあります。ボタンは、ボタンが入っているグリッドの非表示列のデータを使用してテーブル内の一部のデータを編集します。通常、ボタンのjavascript onclientclickを使用して非表示フィールドに行データを送信し、その非表示フィールドを使用してデータベースを変更します。しかし、ボタンのaddhandlerにパラメータを送る方法が必要です。addhandlerにパラメータを送信しますか?

Public Delegate Sub ImageClickEventHandler(ByVal sender As Object, ByVal e As ImageClickEventArgs) 
Sub btnedit_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs) 
//programming stuff 
End Sub 

がどのように私はこのハンドラのパラメータを送信することができます。これは

ここ
Dim btnedit As New ImageButton 
    AddHandler btnedit.Click, AddressOf btnedit_Click 
    btnedit.ImageUrl = "\images\bttnEditMini.gif" 

If e.Row.RowType <> DataControlRowType.Header And e.Row.RowType <> DataControlRowType.Footer Then 
     e.Row.Cells(3).Controls.Add(btnedit) 
End If 

はそのデリゲートで自分のAddHandlerがされて....私は明確にする必要があり、コードのですか?

答えて

0

グリッドになっていたので、代わりにrowコマンドを使用しました。また、Rowコマンドを使用すると、コマンド名とコマンド引数を送ることができます。私は引数として引数を渡しました。ここ

GridView1.Rows(i).Cells(3).Controls.Add(btndel) 
      btndel.ImageUrl = "\images\bttnDelete.gif" 
      btndel.ToolTip = "This will delete the Selected Assignment" 
      btndel.CommandName = "destroy" 
      btndel.CommandArgument = GridView1.Rows(i).Cells(0).Text 
      btndel.Attributes.Add("onclick", "javascript: if(confirm('Are you sure you want to delete this Department Cost Days Assignment?')==false) return false;") 

はrowcommandです:

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    If e.CommandName = "destroy" Then 'used destroy because Delete command was prohibited. 
     Call Connection() 
     Dbcmd.CommandText = "Delete from table where condition = '" & e.CommandArgument & "'" 
     Dbcmd.ExecuteNonQuery() 
     Dbconn.Close() 
     Dbconn.Dispose() 
    End If 
1

短い回答:いいえ。あなたはどこにそれを送りますか?あなたには2つのパラメータがあります。

長い回答:送信者は、イベントを送信したコントロールです。この場合、あなたのbtnEditコントロールになります。多分それがあなたを助けるでしょう。

+0

私はそれを理解しています。別のパラメータを受け入れるようにクリックハンドラを設定することはできますか?もしそうなら、私は他のパラメータをどのように渡すでしょうか? – Eric

+0

いいえ。イベントのハンドラは、常にイベントの署名に準拠している必要があります。追加パラメータは使用できません。おそらく –

3

通常、すべてのイベントハンドラは、送信者とEventArgの2つのパラメータを受け入れます。カスタム情報をリスナーに送信する必要がある場合は、EventArgsから継承し、通信する必要がある情報が含まれる新しいクラスを作成します。

これを行う方法を示すthis article on CodeProjectをご覧ください。

+0

。サンプルコードを投稿できますか? – Eric

0

あなたが「デフォルト」/すでに定義されたパラメータを使用したくない場合は、あなたがあなた自身のイベントを作成することができます。

+0

これは面白いね。私はそれを調べます。 – Eric

関連する問題