2012-01-17 15 views
1

私はRepeaterを持っていて、私のRepeaterの各項目にはCommandEventを発するボタンがあります。ボタンをクリックすると、オブジェクトとしてパラメータを渡す必要があります。リピータからパラメータを渡す

この問題を解決するお手伝いをしてもらえますか?

答えて

1

どのようなオブジェクトですか?ボタンにはCommandArgumentプロパティがあります。文字列の値を保存することができます。

+0

は、私のユーザークラスのオブジェクトです。 – mcamara

2

リピータのItemCommandを処理し、オブジェクトをCommandArgumentとして渡します。

Hereは例です。

<asp:LinkButton ID="btnDeleteComment" runat="server" Text="Delete" CommandName="DeleteComment" CommandArgument=<%#Eval("CommentID") %>></asp:LinkButton> 

分離コード

protected void rptComments_ItemCommand(object source, RepeaterCommandEventArgs e) { 
    if(e.CommandName.ToLower().Equals("deletecomment")) { 
     clsComment comment = new clsComment("mediadb"); 
     comment.CommentID = int.Parse(((LinkButton)e.CommandSource).CommandArgument); 
     comment.DeleteRecord(); 
     rptComments.DataBind(); 
    } 
} 

CommandArgument

が文字列として渡されたので、あなたはおそらく間違った暗黙の型変換を避けるために、最初の場所でそれを変換してきたことを保証します。

クラスのキーパラメータ(IDなど)を使用する必要があります。インスタンスが必要な場合は、ItemCommandイベントハンドラでインスタンスを作成します。

+1

'RepeaterCommandEventArgs.CommandArgument'が' Object'であっても、 'Button.CommandArgument'プロパティは' System.String'です。したがって、(System.Stringに)渡すデータを変換して、暗黙の変換によるバグを避けるのが最も堅牢でしょう。 @tomcamaraあなたはSystem.Stringに変換することができるパラメータの種類を使用していますか? – pseudocoder

+0

@ pseudocoder right、Button.CommandArgumentは文字列です:)私の答えは固定です。 –

+0

したがって、私のパラメータはクラスです!多くの特性を持つ。 – mcamara