繁体   English   中英

为什么我的更新面板不起作用?

[英]Why isn't my update panel working?

更新资料

显然,此问题与控件无关。 我已经在页面上添加了其他UpdatePanels,但它们都不起作用。

我们认为可能是因为目标框架较旧,所以我们将整个项目从.NET 4.0更新到了4.6.1,希望可以解决该问题,但是仍然无法正常工作。 关于可能导致UpdatePanels完全无法正常工作的任何想法?

我在许多其他项目和页面上都使用过UpdatePanels,所以我知道该怎么做才能使其在正常情况下正常工作...

它确实有一个母版页...我不知道这是否有所作为。 我是新来的。

<%@ 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方法,但页面上仍然没有任何反应。 我很茫然。 因此,如果有人能发现我在做什么错,我将不胜感激。 我浏览过这里的每篇文章,都发现了类似的问题,但所有修复均未奏效。

如果您要发布其他代码,请告诉我。

1>您可以用Ajax工具包更新面板替换UpdatePanel。2>您也可以在更新“ SearchControlsUpdatePanel”中部分更改Upadate模式,然后在“公共事件ProviderTypeChanged(ByVal sender As Object,ByVal e As EventArgs)”事件中写入SearchControlsUpdatePanel.Update () 方法..

好的,所以我不太确定为什么会破坏它,但是我的页面继承自另一个重写Render()方法的页面。 在注释掉该替代内容后,我的更新面板开始工作。 这是一个旧的系统,我们实际上正在计划摆脱我继承的那个页面,但是是的,这就是问题所在。

故事的寓意是如此,如果您对UpdatePanel为何无法正常运行没有任何意义。 确保您(或其他人)没有使用Render()方法做任何奇怪的事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM