2011-08-18 42 views
2

我有一个usercontroll接受一些参数,我需要在repeater中插入此usercontrol并将参数从列表<>传递给每个参数,我这样做:如何将参数传递给中继器中的usercontrol

<asp:Repeater ID="winnersRepeater" runat="server"> 
    <ItemTemplate> 
    <uc:myControl ID="myControl" NodeId="<%# DataBinder.Eval(Container.DataItem,"Id")%>" runat="server" />   
    </ItemTemplate> 
</asp:Repeater> 

我在pageLoad的结合:

List<Winner> winners = new List<Winner>(); 
//... 
winnersRepeater.DataSource = winners; 
winnersRepeater.DataBind(); 

它不工作,我越来越Error creating usercontrol... The server tag is not well formed.

我该怎么办呢?谢谢

回答

5

这里的技巧是用引号 - 你使用双引号来打开和关闭这里的NodeId属性,并在表达式中包含字符串。你应该在一个地方使用单引号,在另一个地方使用双引号。

+0

好吧,你是对的,我试图逃脱他们,但没有工作,所以我认为这个问题在页面生命周期的某个地方。这工作'NodeId ='<%#DataBinder.Eval(Container.DataItem,“Id”)%>''但反过来不。谢谢 – Burjua

2

您可以处理Repeater的ItemDataBound事件。在您的处理程序中,您应该可以执行FindControl(“myControl”)并将NodeId值传递给它,而无需在标记中声明它。

+0

谢谢ddc,另一种解决方案看起来更简单:) – Burjua