2012-01-17 7 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 is string : 내 대답이 고쳐졌습니다. –

+0

그래서 내 매개 변수는 클래스입니다! 많은 속성. – mcamara