webforms : 确定 updatepanel 中的哪个控件触发刷新

     2023-05-08     290

关键词:

【中文标题】webforms : 确定 updatepanel 中的哪个控件触发刷新【英文标题】:webforms : determines which control within updatepanel triggers the refresh 【发布时间】:2016-08-26 13:41:45 【问题描述】:

我有一个这样的 aspx 页面:

<asp:UpdatePanel runat="server" UpdateMode="always">
    <ContentTemplate>
        <asp:DropDownList autopostback="true" runat="server" ID="DropDown1" OnSelectedIndexChanged="DropDown1_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:DropDownList autopostback="true" runat="server" ID="DropDown2" OnSelectedIndexChanged="DropDown2_SelectedIndexChanged">
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>

在 2 个下拉列表中的任何一个中的每个 selectionChanged 处,都会完成部分回发,并且我会刷新 updatePanel 内容。但是,我只想在 DropDown1 的 selectionChanged 触发刷新面板后执行一些 js 代码。

我怎样才能在我的页面中进入客户端,在 updatePanel 刷新之后的事件,更重要的是,触发刷新面板的控件的 id(在本例中为 DropDown1)。

我试过这个,但每次加载页面时都会调用它,即使是第一次,我也不知道哪个控件触发了 updatePanel 刷新:

<script>
  $(document).ready(function () 
         
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(PageLoaded)
    );

    function PageLoaded(sender, args) 
        // I have analyzed sender and args without any information to obtain the desired id "DropDown1"
    

</script> 

【问题讨论】:

【参考方案1】:

您可以在 UpdatePanel 回发后使用sender._postBackSettings.sourceElement.id 获取源代码管理的 Id。请参阅下面的示例。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UpdatePanelTest.aspx.cs" Inherits="TestApp.UpdatePanelTest" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="/Scripts/jquery-1.8.2.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager runat="server" ID="sm" ></asp:ScriptManager>
    <div>
    <asp:UpdatePanel runat="server" UpdateMode="always">
        <ContentTemplate>
            <asp:DropDownList autopostback="true" runat="server" ID="DropDown1" OnSelectedIndexChanged="DropDown1_SelectedIndexChanged">
                <asp:ListItem Text="option 1" Value="1" />
                <asp:ListItem Text="option 2" Value="2" />
                <asp:ListItem Text="option 3" Value="3" />
            </asp:DropDownList>
            <asp:DropDownList autopostback="true" runat="server" ID="DropDown2" OnSelectedIndexChanged="DropDown2_SelectedIndexChanged">
                <asp:ListItem Text="option A" Value="A" />
                <asp:ListItem Text="option B" Value="B" />
                <asp:ListItem Text="option C" Value="C" />
            </asp:DropDownList>
        </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    <script type="text/javascript">
        $(document).ready(function () 
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
                function (sender) 
                    if (sender._postBackSettings.sourceElement.id == 'DropDown1')
                        DoSomethingAmazing();
                );
        );

        function DoSomethingAmazing() 
            alert('OMG something amazing just occurred!');
        
    </script> 
    </form>
</body>
</html>

【讨论】:

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

】加载特定UpdatePanel后如何调用客户端javascript函数【英文标题】:HowtocallaclientsidejavascriptfunctionafteraspecificUpdatePanelhasbeenloaded【发布时间】:2010-09-2505:16:28【问题描述】:如何在加载特定更新面板后调用客户端javascript方法?Sys.Web... 查看详情

[jquery]updatepanel更新后的连接事件

<scripttype="text/javascript">$(document).ready(function(){SetupEvents();}); varprm=Sys.WebForms.PageRequestManager.getInstance();prm.add_endRequest(SetupEvents); functionSetupEvents(){//hookupjQueryeven... 查看详情

js公司/asp.net:绑定到javascript中的updatepanel&ŧ039;的更新事件

varprm=Sys.WebForms.PageRequestManager.getInstance();prm.add_pageLoaded(funcToCallWhenAJAXFinished); 查看详情

将 jQuery 用于 AJAX 与 ASP.NET Webforms [关闭]

...而不是ASP.NETAJAX?我试图避免在这个应用程序中完全使用UpdatePanel,这是我过去无法完成的。【问题讨论】:您 查看详情

ASP.NET UpdatePanel:在 UpdatePanel 更新上注入 Javascript

】ASP.NETUpdatePanel:在UpdatePanel更新上注入Javascript【英文标题】:ASP.NETUpdatePanel:InjectingJavascriptonUpdatePanelupdate【发布时间】:2012-12-0523:30:43【问题描述】:以下从更新的UpdatePanel的内容中注入JavaScript的解决方案是否有任何潜在的副... 查看详情

scriptmanager和updatepanel用法(ajax)

ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功能。几个重要... 查看详情

fileupload与updatepanel

UpdatePanel是Asp.net实现页面部分刷新所使用的控件。还是挺不错的控件,避免了不少因为刷新所带来的不良用户体验(点击Asp.net按钮触发页面刷新,清楚textbox中的内容)。但UpdatePanel是不能与FileUpload同时使用的。这也是微软明确指... 查看详情

如何从 JavaScript 更新 UpdatePanel

】如何从JavaScript更新UpdatePanel【英文标题】:HowcanIupdateanUpdatePanelfromJavaScript【发布时间】:2011-08-1608:35:36【问题描述】:给定一个包含UpdatePanels的Asp.Net页面。如何从客户端更新特定的UpdatePanel。是否可以通过从此页面打开的对... 查看详情

UpdatePanel 异常处理

】UpdatePanel异常处理【英文标题】:UpdatePanelExceptionHandling【发布时间】:2010-12-2200:17:29【问题描述】:在我正在构建的ASP.NETWeb应用程序中实现的UpdatePanel中出现异常时,它们会导致页面上出现JavaScript错误,并在警报中提供一些... 查看详情

为啥 asp:UpdatePanel 不刷新图像?

】为啥asp:UpdatePanel不刷新图像?【英文标题】:Whydoesn\'tasp:UpdatePanelrefreshanImage?为什么asp:UpdatePanel不刷新图像?【发布时间】:2011-11-2006:57:56【问题描述】:我有以下UpdatePanel,它从ashx处理程序获取图像,所有这些在刷新页面时... 查看详情

Drupal Webform 模块:仅电子邮件

】DrupalWebform模块:仅电子邮件【英文标题】:DrupalWebformmodule:e-mailonly【发布时间】:2010-07-0711:48:12【问题描述】:我正在使用DrupalWebform6.x-2.9-有没有办法(一些代码sn-p或模块)使表单“仅限电子邮件”而不将提交内容存储在数... 查看详情

UpdatePanel 中的 JavaScript 代码

】UpdatePanel中的JavaScript代码【英文标题】:JavaScriptcodeinsideUpdatePanel【发布时间】:2011-02-2107:20:38【问题描述】:好的:我在一个包含单个占位符的aspx页面上有一个UpdatePanel。在这个占位符中,我根据某些外部条件附加了一个用... 查看详情

UpdatePanel 启动脚本未执行

】UpdatePanel启动脚本未执行【英文标题】:UpdatePanelstartupscriptnotexecuting【发布时间】:2010-12-1116:50:52【问题描述】:我正在编写一个用于SharePoint网站的ASP.NETWeb部件,并尝试使用UpdatePanel来呈现查询结果。我想使用JQuery插件来修改... 查看详情

在 UpdatePanel 中使用 JQuery UI datepicker [重复]

】在UpdatePanel中使用JQueryUIdatepicker[重复]【英文标题】:UsingJQueryUIdatepickerinsideUpdatePanel[duplicate]【发布时间】:2011-08-2916:27:24【问题描述】:我正在尝试将UpdatePanel控件和JqueryUI用于日期选择器。但如果日期选择器控件(TextBox)在... 查看详情

找不到 ID 为“xxx”的 UpdatePanel。如果它是动态更新的,那么它必须在另一个 UpdatePanel 中

】找不到ID为“xxx”的UpdatePanel。如果它是动态更新的,那么它必须在另一个UpdatePanel中【英文标题】:CouldnotfindUpdatePanelwithID\'xxx\'.IfitisbeingupdateddynamicallythenitmustbeinsideanotherUpdatePanel【发布时间】:2011-04-2502:28:18【问题描述】:我... 查看详情

如何在 ASP.NET WebForms 中触发模式窗口?

】如何在ASP.NETWebForms中触发模式窗口?【英文标题】:HowtotriggeramodalwindowinASP.NETWebForms?【发布时间】:2014-11-2805:55:13【问题描述】:如何在ASP.NETWebForms应用程序中显示模式窗口?我需要显示一个带有2个按钮(确定/取消)的模式... 查看详情

PageMethods 和 UpdatePanel

】PageMethods和UpdatePanel【英文标题】:PageMethodsandUpdatePanel【发布时间】:2011-10-1302:50:59【问题描述】:我有一个如下的页面层次结构如果我单击“保存”按钮,我想执行一个PageMethod,所以我编写如下代码OnButtonClick我调用了OnClient... 查看详情

UpdatePanel 只刷新一次

】UpdatePanel只刷新一次【英文标题】:UpdatePanelrefreshesonlyonce【发布时间】:2011-02-0401:25:25【问题描述】:我在手风琴控件中有两个更新面板,布局如下:<accordion><firstpanecontent><updatepanelUpdateMode="conditional"><contenttemp... 查看详情