我有一個用戶控件,我做了,並將該控件的兩個實例放在同一頁...當我與第一個控件交互時,它更新了元素(使用ajax)的第一個用戶控件,因爲它應該。但是當我對第二個userControl做同樣的事情時,它會更新第一個userControl上的元素而不是它本身!這很奇怪,因爲沒有任何東西被聲明爲共享的,它看起來像一個實例化問題。ASP.NET UserControl幫助
每個userControl都包裝在自己的ajax更新面板中。
任何想法的人?這是一個常見的陷阱?
這是我的代碼的結構
<@ Control Language="VB" ClassName="AgeRange">
<@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="AjaxCT">
<script runat="server">
Delegate Sub NumberClickedEventHandler(ByVal sender As Object, ByVal e As EventArgs)
Public Event NumberClicked As NumberClickedEventHandler
Public Class NumberClickedEventArgs
' EVENT ARGS CLASS
End Class
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' PAGE LOAD STUFF HERE
End Sub
Public Property A FEW PROPERTIES HERE
Protected Function GetHTML(ByRef lastNumber As Byte, Optional ByVal FromNo As Byte = 18,
Optional ByVal bForPopDown As Boolean = False, Optional ByVal bForPopUp As Boolean = False) As String
SOME CODE HERE
End Sub
-
<asp:UpdatePanel ID="upAgeRange" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional" ClientIDMode="Static"
<ContentTemplate>
<table><tr>
<td>
<span id="spanPopUp" runat="server">
</span>
<div id="dPanel" runat="server">
</div>
<span id="spanPopDown" runat="server">
</span>
</td>
</tr>
</table>
<AjaxCT:HoverMenuExtender ID="hmeUp" runat="server" TargetControlID="dPanel" PopupControlID="spanPopUp" OffsetY="-200">
</AjaxCT:HoverMenuExtender>
<AjaxCT:HoverMenuExtender ID="hmeDown" runat="server" TargetControlID="dPanel" PopupControlID="spanPopDown" OffsetY="60">
</AjaxCT:HoverMenuExtender>
</ContentTemplate>
</asp:UpdatePanel>
您如何定位控件進行更新?你在使用FindControl嗎? – Eilon 2009-12-30 22:00:59
@ERX_VB ....您能否通過解釋或示例代碼澄清這是客戶端還是服務器端問題? – griegs 2009-12-30 22:10:38
這是一個服務器問題,GetHTML在服務器上完成,它使用服務器上的.InnerHTML屬性更新runat = server span/div控件...更新總是在UserControl1上發生,而不是在aspx頁面上的UserControl2上發生包含此用戶控件的兩個實例 – 2009-12-30 22:16:57