我有一個包含Repeater的頁面,其中包含服務器控件元素,在UpdatePanel內,並且所有其他控件的行爲正常時,Drop Down控件導致完整每次回發。ASP.NET C#,在轉發器中導致完整回發的動態下拉
<asp:Repeater ID="rpt" runat="server">
<ItemTemplate>
<asp:SomeWorkingControl ID="swc" runat="server" />
<asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="0" Value="0" />
<asp:ListItem Text="1" Value="1" />
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
這是非常有價值的代碼,DropDownList控件實際上是在UserControl中,但理論是相同的。
如果我將事件應用到SomeWorkingControl然後有一個Ajax回發和一切都很好。
但是,與DropDownList關聯的事件會導致完整的回發!我知道通常你會爲DropDown設置一個異步觸發器,但是由於它是在一箇中繼器中創建的(因此我不知道會有多少),所以我真的不知道它是如何工作的。
有沒有誰曾經歷過這種情況,並知道一個解決方法或許?
你的UpdatePanel中是否有觸發器?你可以用更新面板更新完整的aspx代碼 – Damith
不,現在UpdatePanel中沒有觸發器。通常我會這麼做,但是由於Repeater內部的DropDownList,我不知道該指向哪個觸發器。 我不能真正發佈完整的ASPX,它是一個ASPX中的UpdatePanel和用戶控件中的有問題的代碼的大頁面,在一箇中繼器中,然後是另一個用戶控件。 UpdatePanel是基本的,看起來像這樣。 的 <的ContentTemplate> ... ASCX - >轉發器 - > ASCX 的ContentTemplate> 的UpdatePanel> –
您可能希望簡化佈局 - 「Repeater」已經被設計爲重複每行的標記。如果您打算在其他地方使用該標記,則將該標記封裝在「UserControl」中僅有幫助。 –