【发布时间】:2016-10-18 06:52:47
【问题描述】:
更新
显然这个问题与控件无关。我已经在我的页面上添加了其他 UpdatePanel,但它们都没有工作。
我们认为可能是因为目标框架太旧,所以我们将整个项目从 .NET 4.0 更新到 4.6.1,希望能修复它,但它仍然无法正常工作。关于什么可能导致 UpdatePanels 根本无法工作的任何想法?
我在许多其他项目和页面上都使用过 UpdatePanel,所以我知道如何让它们在正常情况下正常工作...
它确实有一个母版页...我不知道这是否会有所不同。我是新手。
<%@ Page Title="" Language="vb" AutoEventWireup="false" ClientIDMode="Static" MasterPageFile="~/Primary.Master" CodeBehind="Overpayment_Referral_Form_New.aspx.vb" Inherits="Overpayment_Referral_Form_New" %>
<%@ MasterType VirtualPath="~/Primary.Master" %>
原帖
好的,所以我有一个用户控件可以使用一些下拉列表和文本框进行搜索,如下所示:
<asp:Label runat="server" ID="lblProviderType" CssClass="InlineSpacer">
Provider Type:
<asp:DropDownList ID="ddlPartyClass" runat="server" Width="128" AutoPostBack="True"></asp:DropDownList>
</asp:Label>
后来:
<asp:Label ID="lblFirstName" runat="server" CssClass="InlineSpacer">
First Name:
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
</asp:Label>
<asp:Label ID="lblLastName" runat="server" CssClass="InlineSpacer">
Last Name:
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
</asp:Label>
<asp:Label runat="server" ID="lblFullName" Visible="False" CssClass="InlineSpacer">
Provider Name:
<asp:TextBox ID="txtFullName" runat="server"></asp:TextBox>
</asp:Label>
下拉列表填充在后面的代码中。当它发生变化时,将运行 ToggleFields 函数,该函数会翻转上面标签上的可见性。我目前定义了一个自定义事件,我在 selectedIndexChanged 处理程序中引发:
Public Event ProviderTypeChanged(ByVal sender As Object, ByVal e As EventArgs)
...
Private Sub ddlPartyClass_SelectedIndexChanged( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles ddlPartyClass.SelectedIndexChanged
ToggleFields()
RaiseEvent ProviderTypeChanged(sender, e)
End Sub
(实际上我并没有命名或创建大部分内容,所以我为奇怪的约定和格式道歉。至少它们对我来说很奇怪......)
我已在此处将此控件放入我的页面中:
<asp:UpdatePanel ID="SearchControlsUpdatePanel" runat="server">
<ContentTemplate>
<div id="AllSearchControls">
<div id="ProviderSearchControlDiv" class="SearchControlDiv">
<uc1:ContainedProviderSearch runat="server" ID="ProviderSearchControl" SearchContext="OverpaymentReferralForm"/>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ProviderSearchControl" EventName="ProviderTypeChanged"/>
</Triggers>
</asp:UpdatePanel>
我目前还让我的页面脚本管理器将控件注册为异步。我的脚本管理器的 EnablePartialRendering 属性设置为“True”。我已经尝试了用于触发器的控件的所有变体,其中更新面板位于(在控件内部,在带有控件的页面上,两者),以声明方式或编程方式设置触发器,将 UpdateMode 设置为 Conditional 和 Always ,并且我无法在不刷新整个页面的情况下翻转这些标签的可见性。
我尝试了一些可以通过页面刷新来翻转它们的方法,有些方法是异步回发,没有页面刷新,但更新面板内也没有变化。我已经逐步完成并看到可见性被翻转,看到 UpdatePanel 的 Update 方法被显式调用并设置了正确的值,但页面上仍然没有发生任何事情。我不知所措。因此,如果有人能发现我做错了什么,我将不胜感激。我在这里浏览了所有可以找到类似问题的帖子,但没有一个修复有效。
如果您想发布其他代码片段,请告诉我。
【问题讨论】:
标签: asp.net vb.net asynchronous user-controls updatepanel