也许我在这里做了一个错误的假设,但这让我很难过。 我必须在同一个控件的两个不同位置设置两个相同的中继器。我想避免更改控件的名称,以便我可以在前端使用相同的功能(实际上,如果有更好的方式在直接复制和粘贴之外的两个不同位置使用两个相同的中继器,那将是大)。但是,为了简单起见,我已经打破两个如下:重复中继器,相同的UpdatePanels
<asp:Repeater ID="rptTest" runat="server">
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="updTestPanel">
<ContentTemplate>
<asp:TextBox ID="txtTest" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:TextBox ID="txtTest2" runat="server" />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="rptTest2" runat="server">
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="updTestPanel">
<ContentTemplate>
<asp:TextBox ID="txtTest" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:TextBox ID="txtTest2" runat="server" />
</ItemTemplate>
</asp:Repeater>
事情是这样的:txtTest2
是罚款在两个中继器被重复,但txtTest
将引发以下错误:
错误4 'txtTest'已经在这个类中声明为'Protected WithEvents txtTest As System.Web.UI.WebControls.TextBox'。
错误5'私人重载函数__BuildControltxtTest()由于System.Web.UI.WebControls.TextBox'具有多个具有相同签名的定义。
错误8'txtTest'已在此类中声明为'Protected WithEvents txtTest As System.Web.UI.WebControls.TextBox'。
有没有办法做我想做的事情,还是我需要重新思考我在中继器中如何调用异步数据?
我想我不清楚的是,对于控制txtTest2,范围似乎是中继器,但对于txtTest,它回到了页面级别,即使它在中继器内 - 也仅在UpdatePanel内。什么是UpdatePanels,使控制范围返回页面级? – sixtimes 2011-05-29 06:07:19
updatepanels最终被浏览器解释为'div',并且它只是通过名称来识别div,所以DOM可以重绘它。对于中继器,我相信'是相同的(由div标识),所以一旦输出,就没有真正的'范围'将它们分开...... – 2011-05-29 14:24:50
Updatepanels也有不同的方式来引用它里面的字段,因为DOM需要引用它....你没有收到txtTest2字段的错误? – 2011-05-29 14:26:31