jQuery 对话框回发但 UpdatePanel 未更新

2024-04-10

我想从代码隐藏中显示 jQuery UI 对话框,并且需要在回发后刷新它。

该对话框是用于过滤和查找数据的控件。因此,用户从 DropDownLists 中进行选择并在 TextBoxes 中输入文本,单击“Apply-Button”,发生异步回发,数据根据用户的选择进行过滤,结果将显示在 GridView 中。因此我需要更新 GridView 周围的 UpdatePanel。

异步回发在以下链接的帮助下工作:

  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框 https://stackoverflow.com/questions/757232/jquery-ui-dialog-with-asp-net-button-postback
  • http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html

(基本上dlg.parent().appendTo(jQuery("form:first"));-解决方案)

Problem:我无法使用 UpdateMode="Always" 或通过 UpdatePanel.Update() 从代码隐藏手动更新 UpdatePanel。我认为这与对话框不在 UpdatePanel 或类似的内部有关。希望有人可以帮助我。

一些来源:

function createChargeFilterDialog() {
    //setup dialog
    $('#Dialog_ChargeFilter').dialog({
        modal: true,
        resizable: false,
        autoOpen: false,
        draggable: true,
        hide: "Drop",
        width: 850,
        height: 600,
        position: "center",
        title: "Charge-Filter",
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        },
        open: function (type, data) {
            $(this).parent().appendTo(jQuery("form:first"))
        },
        close: function (type, data) {
        }
    });
}

当通过单击 BtnShowDialog(在 jQuery-Dialog 之外)时,它会从代码隐藏中调用

AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript _
            (Me.Page, GetType(Page), "showChargeFilterDialog", "createChargeFilterDialog();$('#Dialog_ChargeFilter').dialog('open');", True)

Update:我还注意到回发值中存在问题。所有文本框(如果为空或未附加逗号)。这表明控件根据以下方式多次呈现:http://www.componentart.com/community/forums/t/60999.aspx http://www.componentart.com/community/forums/t/60999.aspx

我确信这两个问题都是相关的。整个对话框及其所有控件将在每次异步回发中重新创建,因此所有控件名称在 DOM 中多次存在(导致 ViewState 逗号附加问题)。这些控件仅在 FireBug/IE Deveoper 工具栏中可见,而不是在 HTML 源中可见,因此我认为 jQuery 导致了这些问题。我怎么能够dispose对话框或者我怎样才能阻止娱乐活动(检查是否已经存在)对话框?这是因为对话框位于 UpdatePanel 内部还是因为它(通过 Javascript)移动到 UpdatePanel 外部?

在异步回发之前销毁对话框并不能解决问题,因为对话框只会消失:

<asp:Button ID="BtnApplyFilter" OnClientClick="$('#Dialog_ChargeFilter').dialog('destroy');" ... />

非常感谢您的帮助。


Solution:我最终使用了模态弹出扩展器 http://www.asp.net/ajax/ajaxcontroltoolkit/samples/modalpopup/modalpopup.aspx来自 AjaxControlToolkit。在出现一些小问题之后,它的工作方式就像具有异步回发的魅力(不要忘记调用MPE.Show()在每个代码隐藏函数中(如果您希望弹出窗口保持可见)。如果有人感兴趣,我可以添加更多代码。


我认为它有事可做 对话框不在里面 UpdatePanel 或类似的东西。

我还注意到了一个问题 回发值。所有文本框如果 空或不附加逗号。

你在这两点上确实是正确的。问题的关键是脚本管理器“认为”它应该更新 jQuery 实际上已移动到页面上不同位置的元素,从而导致该元素的多个副本以及您提到的问题。

我在使用嵌套 UpdatePanel 时看到过此问题,但在其他情况下也可能会出现此问题。

这是一个解决方法很混乱的问题。

选项 1 - 更改 jQuery UI 的源代码。我没有找到快速解决办法。除了重写整个插件之外,我找不到在不重新排序 DOM 的情况下让对话框正常工作的简单方法。另外,通过这条路线,现在您“拥有”源代码,因为您已经修改了它。

选项 2 - 每当页面部分呈现时调整 DOM 以删除重复元素。您可以输出一些额外的脚本来清理虚假的重复元素。我不喜欢这种方法,因为它允许 DOM 在脚本运行之前处于无效状态。

选项 3 - 手动覆盖 UpdatePanel 的呈现。代码看起来像这样:

private bool _hasDomPresence
{
    get
    {
        return ViewState["__hasDomPresence"] == null ? false : (bool)ViewState["__hasDomPresence"];
    }
    set
    {
        ViewState["__hasDomPresence"] = value;
    }
}

protected override void OnLoad( EventArgs e )
{
    if( !ScriptManager.GetCurrent( this.Page ).IsInAsyncPostBack )
    {
         // a full postback means we no longer have a DOM presence
         _hasDomPresence = false;
    }

    base.OnLoad( e );
}

protected virtual void ShowDetailDialog()
{
    // code to show the offending dialog

    // we are showing it, so note the fact that it now has a DOM presence
    _hasDomPresence = true;
}  

protected override void Render( HtmlTextWriter writer )
{
    foreach( Control c in this.Controls )
    {
        //
        // find the offending control's parent container prior to it being rendered
        // In my scenario, the parent control is just a server-side DIV
        if( c == this.DetailDialog )
        {
            //
            // here, I am checking whether or not the panel actually needs to be
            // rendered. If not, I set it to invisible, thus keeping a new DOM
            // element from being created.
            if( !this.DetailUpdatePanel.IsInPartialRendering && _hasDomPresence )
            {
                this.DetailUpdatePanel.Visible = false;
            }
        }
    }

    base.Render( writer );
}

这也会混淆事件验证,因为页面的客户端和服务器版本不匹配(或者至少 ASP.Net 无法判断它们是匹配的)。我能找到的使这项工作有效的唯一方法是关闭事件验证。

有了适当的安全模型,事件验证并不是 100% 必要的,但我不喜欢被迫关闭它。

总而言之,这是我在 SO 上发布的最邪恶的代码,如果你使用它,毛茸茸的白色小猫就会死,但这种方法似乎确实有效。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery 对话框回发但 UpdatePanel 未更新 的相关文章

  • 使用 jQuery 查找带有文本的元素

    我想创建一个包含文本字符串的 div 中所有 html 元素的数组 例如 p some string p 我不想获取字符串 我希望数组项成为元素 在示例中 将是 p 节点 我事先不知道字符串是什么 所以我无法查找匹配的字符串值 我也不希望空
  • requestValidationMode 2.0 和 4.0 有什么区别

    这是 MSDN 的定义 4 0 默认值 HttpRequest 对象在内部设置一个标志 指示每当访问任何 HTTP 请求数据时都应触发请求验证 这保证了在请求期间访问 cookie 和 URL 等数据之前触发请求验证 配置文件中的页面元素
  • 签署.net核心程序集的正确方法

    我正在尝试签署 net core 库 但我不确定我是否正确执行了所有操作 1 使用VS命令提示符IS调用sn k mykey snk 2 复制mykey snk到我的项目文件夹 3 in project json添加了密钥文件 framew
  • Bootstrap 标签栏平滑移动导航按钮

    我有一个用于切换块的普通引导选项卡面板 在导航中切换块时 活动选项卡会突出显示 但现在 当我单击活动选项卡的背景时 它会立即发生变化 是否可以使切换选项卡时背景不会立即改变 而是根据需要哪个选项卡而平滑地左右移动 这可以用以下方法完成吗cs
  • 两个日期范围之间相交的天数

    有人知道如何最好地计算两个日期范围之间相交的天数吗 这是我写的一个小方法来计算这个 private static int inclusiveDays DateTime s1 DateTime e1 DateTime s2 DateTime
  • jquery.validate:多个远程规则

    我计划使用两个远程规则验证单个文本字段 更多这样的 form validate rules remote url1 php remote url2 php messages remote Error1 remote Error2 这可能吗
  • 生成逗号分隔值

    假设我有一个字符串集合 foo bar xyz 我想从列表中生成一个逗号分隔的值 如下所示 foo bar xyz 请注意末尾缺少 我知道有多种方法可以生成此内容 使用 for 循环和 string Format 或 StringBuild
  • jQuery 可以操作插入的元素吗?

    我是 jQuery 的新手 我认为 jQuery 可以操作由代码添加的元素是合理的 但我发现现在还不能 function addVideo click function publisher append div div
  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • fadeOut() 和slideUp() 同时进行?

    我已经发现jQuery 淡出然后滑动 https stackoverflow com questions 734554 jquery fadeout then slideup这很好 但不是那个 我怎么能够fadeOut and slideU
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • 直接将 .aspx 转换为 .pdf [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • 使 Bootstrap Popover 在悬停而不是单击时出现/消失

    我正在使用 Bootstrap 构建一个网站Popover http twitter github com bootstrap javascript html popovers我不知道如何使弹出窗口出现在悬停而不是单击时 我想做的就是当有人
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 意外的令牌:尝试解析 JSON 字符串时

    我正在尝试解析这个 JSON 字符串 RESULTS name Thessaloniki GR type Sailing l sailing weather beach Porto 20Carras 20Marina 45904 name
  • 使用 IdentityDbContext 和 Code First 自动迁移表位置和架构的实体框架?

    我正在尝试使用 IdentityDbContext 类设置自动迁移更新 并将更改传播到整个数据库的实际 DbContext 在进入代码之前 在使用自动迁移实现 IdentityDbContext 时 我收到此错误 影响迁移历史系统表位置的自
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当

随机推荐

  • MVC 与前端控制器混淆

    简化问题 我正在学习 oop 模式 并且希望构建自己的简单 mvc 框架 我希望它有一个前端控制器 但我发现很难找到任何可靠的信息来使用 MVC 实现前端控制器 特别是我很困惑前端控制器是否应该启动整个三元组 或者前端控制器是否只是简单地调
  • SKScene 中的 Segue 到 UIViewController

    在我的 GameScene swift 文件中 我尝试执行返回到我的菜单视图控制器的操作 如下所示 func returnToMainMenu var vc UIViewController UIViewController vc self
  • MySQL CASE 是如何工作的?

    我知道 SQL 的CASE语法如下 CASE WHEN search condition THEN statement list WHEN search condition THEN statement list ELSE statemen
  • javascript 函数绑定到什么对象(它的“this”是什么)?

    我知道它在函数内部this var func function return this f arguments callee gt true if bound to some object gt false if is bound to n
  • 如何找到csv文件列的平均值

    import csv with open Met csv r as f reader csv reader f delimiter quoting csv QUOTE NONE for row in reader print row 我无法
  • 显示包含扩展信息的页面

    I have the following functionality given below 单击详细信息时 我希望内容视图上显示的文本应显示在由推送异步创建的新详细信息页面上 如何发送包含内容中给出的信息的参数 例如标题 类别和描述 我有
  • 来自 keras 模型中图像列表的 TensorFlow 数据集

    我试图了解如何读取本地图像 将它们用作 TensorFlowDataset https www tensorflow org api docs python tf data Dataset并使用 TF 数据集训练 Keras 模型 我正在关
  • 为什么没有为原始数据类型分配内存? [复制]

    这个问题在这里已经有答案了 char bool 和 int 等原始数据类型有一定的内存 假设char 它有1个字节的内存 当我们在代码中使用 char 变量时 该变量必须需要 1 个字节的内存 在这种情况下我们为什么不分配内存呢 由于我们从
  • Spring - 需要在 @Component 类中自动装配 @RestController 类

    我在同一个 Maven 父模块下组合了 Web 和核心项目 如下所示 家长 网络 com parent test web 核心 com parent test core 我想参考核心项目中的Web模块依赖项来调用Web模块中的一些api 网
  • 从打开的“fancybox”中的功能关闭花式框

    大家好 我希望能够在从内部打开 fancyBox 时将其关闭 我已尝试以下方法但无济于事 function closeFancyBox html var re Element insert complete gi if html searc
  • Tensorflow 对象检测 API 索引越界

    运行 Android TF Detect 演示并使用我重新训练的 3 类 ssd mobilenet v1 coco 模型后 我的 TF 检测演示崩溃 给出索引越界异常这是 12 26 17 53 13 931 22429 25212 or
  • 设置Loader项目属性

    In the context https stackoverflow com questions 33513546 delegate folderlistmodel in tableview文件管理器 我有一个TableView组件保存在文
  • JavaScript 组织 |带模块的模块模式

    我将代码组织成 20 60 行模块 通常采用模块模式 我想要一个结构良好的面向对象的 JavaScript 库 这是最好的方法吗 该代码已经过测试并且可以工作 我喜欢它 因为程序员可以从库中提取模块并根据需要使用它们 它们是独立的 这里是
  • ASP.Net MVC - 处理错误的 URL 参数

    处理访问者构建自己的 URL 并将我们期望的 ID 替换为他们喜欢的任何内容的最佳方法是什么 例如 ASP Net MVC 处理错误的 URL 参数 https stackoverflow com questions 236349 但用户可
  • 如何将已经编译好的C库添加到Android中?

    我已经编译了库 针对 linux a 和 windows dll 我需要将其中一个 我想对于 Android 我将不得不使用 a 库导入到我的 android 项目中 所以我已经阅读了一些关于 NDK 的教程 但这里有一个问题 我是否需要源
  • Emgu CV 和官方 Microsoft Kinect SDK?

    Emgu CV http www emgu com wiki index php Main Page目前允许将 Kinect 与 OpenNI 驱动程序一起使用 http www emgu com wiki index php Downlo
  • 整个应用程序的异常处理

    我对 iPhone 中的异常处理有一些疑问 他们是这样的 假设我有一连串被依次调用的方法 即方法 A 调用方法 B 方法 B 又调用方法 C 方法 C 调用方法 D 这是放置我的 try catch 块的最佳位置 是方法 A B C D 还
  • 用拼凑的方式组合和合并 ggplot2 中的图例

    我想结合两个或多个情节来融合他们的传奇 例如 我可以创建一些数据和两个场景 如下所示 packages library ggplot2 library patchwork first plot set seed 07042020 x lt
  • 我如何知道 Perl 正则表达式的哪一部分与字符串匹配?

    我想搜索文件的行以查看其中是否有任何行与一组正则表达式中的一个匹配 像这样的东西 my regs qr a qr b qr c foreach my line
  • jQuery 对话框回发但 UpdatePanel 未更新

    我想从代码隐藏中显示 jQuery UI 对话框 并且需要在回发后刷新它 该对话框是用于过滤和查找数据的控件 因此 用户从 DropDownLists 中进行选择并在 TextBoxes 中输入文本 单击 Apply Button 发生异步