从中继器传递参数

问题描述:

我有一个Repeater,并且对于我的Repeater中的每个项目,我都有一个按钮来触发CommandEvent。当我的按钮被点击时,我需要传递一个对象作为参数。从中继器传递参数

你能帮我解决这个问题吗?

它是什么样的对象? Button有CommandArgument属性。您可以保存字符串值。

+0

是我的用户类中的一个对象。 – mcamara 2012-01-17 18:31:59

处理直放站的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 2012-01-17 18:18:04

+0

@pseudocoder正确,Button.CommandArgument是字符串:)修复了我的答案。 – 2012-01-17 18:26:37

+0

所以,我的参数是一个类!有很多属性。 – mcamara 2012-01-17 18:29:32