代码之家  ›  专栏  ›  技术社区  ›  juan

使用jquery的具有复杂功能的弹出窗口

  •  0
  • juan  · 技术社区  · 15 年前

    我使用jquery模拟弹出窗口,用户将在其中选择一系列过滤器,我希望使用这些过滤器在原始窗口中重新绑定ListView。

    “popup”通过Ajax请求打开,内容实际上是一个不同的ASPX文件(呈现的输出被注入到充当popup的DIV中)。

    我在弹出窗口中有另一个ListView,它有分页。

    我的问题是,由于弹出窗口实际上是在同一个页面的一个DIV中的HTML内容,所以当我尝试分页时,整个页面将回发,并替换为具有过滤器的ASPX。

    我怎么修这个? 我尝试使用更新面板来包含ListView,但它不起作用。

    3 回复  |  直到 15 年前
        1
  •  1
  •   fmsf    15 年前

    $(“div.yourthinie”).hide();

    将隐藏要显示的部分:)不要快速生成弹出窗口,而是保留一个已制作的小部分,并将其隐藏在开始处,当需要显示时,取消隐藏并添加需要的信息。

    希望它有帮助

        2
  •  1
  •   reinierpost    15 年前

    要么去掉HTML“外壳”,只生成包含其内容的<div>,要么使用iframe。

        3
  •  0
  •   Gregory A Beamer    15 年前

    首先,让我们想想发生了什么。提交原始页面时,您将进行“正常”请求/响应行程以获取代码。页面上是一个jquery-ajax位,它触发了本质上是模式对话框的内容。所期望的效果是,用户可以使用新页面,直到找到过滤器并提交回来。问题是,当有人分页时,这个“模式页”会丢失信息。

    理论上,解决这个问题的方法相当简单。您必须将“过滤器”存储在弹出的页面中,以便重新发送它们以及分页信息。或者您必须在用户分页时缓存结果集。

    要解决这个问题,我要做的是创建一个有“过滤器”的静态页面,并解决Ajax的问题,而不是将页面发布回父页面。一旦所有的Ajax位都正常工作了,我就会将其链接到弹出例程中,并确保分页仍然没有问题。最后一个问题是创建一个javascript例程,该例程将发送回父页,并允许父页将其jquery位发送回服务器。

    我对公式的html div部分不确定,我认为如果没有这个解决方案,您可以解决这个问题。事实上,我相信您可以在不调用Ajax的情况下创建“模式弹出”页面,如果可能的话,可以a)通过查询字符串提交要应用的过滤器,或者b)伪造提交到第二页的表单。查询字符串是一个更简单的选项,但它会公开一些信息。总的来说,伪造表单提交并没有那么困难,但是使用弹出窗口可能会有问题。

    我只是想激发一些想法,但我希望它能为你带来一些刺激。