2010-03-07 36 views
0

我有一个嵌套的中继器,我想在其标题中传递值。这里是我的代码到目前为止。 主要问题是标题模板中的控件的id也来自后面的代码。在标题模板中嵌套的中继器通过值

<asp:Repeater ID="RptrProgCategory" runat="server"> 
    <ItemTemplate> 
     <asp:Repeater ID="RptrPrograms" runat="server"> 
      <HeaderTemplate><input type="hidden" id="<%= questvalue%>"/></HeaderTemplate> 
      <ItemTemplate>      
       <a href="/" id="catid" class="off"><%# DataBinder.Eval(Container.DataItem, "cat") %></a> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

我想从后面的代码中获得值的questvalue。任何想法如何实现这一目标?

编辑:我希望把这个值在一个DataTable并绑定在转发该值bcoz我想这样的输出可能是<%#DataBinder.Eval的(的Container.DataItem,“questvalue”)%>代替<%= questvalue%> ..但在THT情况下,我不能够找到控制

Category1(id of hidden field) 
    subcat1 
    subcat2 
    subcat3 
Category2(id of hidden field) 
    subcat4 
    subcat5..and so on.. 
+0

如果您不知道ID,隐藏字段的意义何在?你确定你不希望*值*是动态的吗? – 2010-03-07 13:51:07

+0

实际上有一些JavaScript连接到ID ...并且我无法更改JavaScript ...所以我将来自代码的隐藏字段放在代码后面以实现此目的。 – 2010-03-07 15:12:20

回答

0
Repeater mainRepeater = this.Page.FindControl("RptrProgCategory") as Repeater; 
Repeater nestedRepeater = mainRepeater.FindControl("RptrProgCategory") as Repeater; 

那么你可以做的FindControl在nestedRepeater为questValue。 将runat ='server'添加到questvalue中,以便您可以在后面的代码中访问它。

我从内存中写这个,语法可能不正确,但它应该让你在正确的方向。

+0

事情是Picflight,当我们一般做的FindControl在nestedRepeater我们specifiy像 HiddenField _hidden =(HiddenField)nestedRepeater.Controls [0] .FindControl的ID( “hiddenfieldid”) 但对我来说我可是从代码发送ID背后所以如何在这里指定它。 – 2010-03-07 13:34:05

+0

将中继器中控件的id设置为mycontrolId - 然后OnItemDataBound - (或甚至OnItemCreated)使用findcontrol(“mycontrolId”) - 然后将控件的id更改为您的questvalue参数。 – FiveTools 2010-03-07 21:50:24

0

将中继器中的控件的id设置为mycontrolId - 然后OnItemDataBound - (或甚至OnItemCreated)使用findcontrol(“mycontrolId”) - 然后将控件的id更改为您的questvalue参数。