[英]ASP.NET UserControl Help
我有一個用戶控件,並將該控件的兩個實例放在同一頁上...當我與第一個控件交互時,它會按需更新第一個userControl的元素(使用Ajax)。 但是當我對第二個userControl做同樣的事情時,它會更新第一個userControl上的元素,而不是它本身! 這真的很奇怪,因為沒有任何東西被聲明為共享的,而且看起來像一個實例化問題。
每個userControl都包裝在自己的Ajax updatepanel中。
有任何想法嗎? 這是一個常見的陷阱嗎?
這是我的代碼的結構
<@ 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>
您當前在更新面板控件中使用ClientIDMode="Static"
。 這意味着生成的HTML將具有重復的ID。 自動為更新面板生成的客戶端代碼需要具有不同的ID,以便它可以找到用於放置更新的正確HTML元素。
您可能根本不需要ClientIDMode="Static"
。
假設這是客戶端問題,而不是服務器端問題。
您需要確保兩個控件都具有唯一的名稱。
我的偏好是將這些控件放在具有唯一類名的<div>
中。
<div class="Ctrl1">
<div class="ctrl2">
和<div class="ctrl2">
然后,我可以在我感興趣的實際類中使用findControl。
像$('.Ctrl2').findControl
....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.