簡體   English   中英

ASP.NET UserControl幫助

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM