【发布时间】:2012-01-07 17:52:47
【问题描述】:
我已经做了一个菜单列表。它由两个转发器组成,一个带有 productType,另一个带有该产品类型的内容。 可以在一个文本框中输入你想要多少个内容,我现在想找到该文本框及其内容。
这就是我的 ASP.NET 代码的样子:
<asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ParentRepeater_ItemDataBound">
<ItemTemplate>
<h2>
<%#DataBinder.Eval(Container.DataItem, "typenavn") %></h2>
<asp:HiddenField ID="HiddenField1" Value='<%# Eval("id") %>' runat="server" />
<asp:Repeater ID="ChildRepeater" runat="server">
<ItemTemplate>
<table>
<tr>
<td style="width: 400px">
<%#DataBinder.Eval(Container.DataItem, "productName") %>
</td>
<td style="width: 400px">
<%#DataBinder.Eval(Container.DataItem, "pris") %>
</td>
<td>
<asp:HiddenField ID="HiddenField2" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
这是我迄今为止尝试做的:
Repeater ChildRepeater;
foreach (RepeaterItem item1 in ParentRepeater.Items)
{
if (item1.ItemType == ListItemType.Item || item1.ItemType == ListItemType.AlternatingItem)
{
ChildRepeater = (Repeater)item1.FindControl("ChildRepeater");
foreach (RepeaterItem item2 in ChildRepeater.Items)
{
if (item2.ItemType == ListItemType.Item || item2.ItemType == ListItemType.AlternatingItem)
{
TextBox txt = (TextBox)item2.FindControl(("MainContent_ParentRepeater_ChildRepeater_0_HB1_0")) as TextBox; // MainContent_ParentRepeater_ChildRepeater_0_HB
}
}
}
break;
}
首先进入 parentrepeater,然后进入它的 chilrepeater。 但它找不到我的文本框。
任何机构有和想法??
【问题讨论】:
-
你的 ViewState 设置是什么。它是假的吗?如果是的话,试着让它 ViewState = true;还有什么 EventHandler 你在检查这个..?
-
看来您应该尝试使用 TextBox txt = item2.FindControl("TextBox1") as TextBox; 查找文本框; -- 不确定您从哪里获得“MainContent_ParentRepeater_ChildRepeater_0_HB1_0”?
标签: c# asp.net repeater findcontrol