作为我的情况的前言,应该注意我使用的是ASP.NET(C#)和jQuery。
所以,这是布局:我有一个顶部div(标题/菜单),跨越页面的整个水平长度。在这个标题/菜单下,我有2个其他div。左边div是一个带有页面链接的导航div。右侧div是Ajax从左侧div中的链接加载的页面的显示div。
让我们看看我是否可以画出来......
=====================================================
= Top Div (header/menu) =
=====================================================
= = =
= = =
= = =
= = =
= Left Div = Right Div =
= (Navigation) = id = "rightdiv" =
= = (Displays content loaded by =
= = Ajax from the links in the =
= = left div) =
= = =
= = =
= = =
= = =
=====================================================
到目前为止,一切正常。我可以单击左侧div中的链接,然后使用jQuery ... $('#rightdiv').load('pagenamehere.aspx');
。
这是问题......
我正在加载到右侧div的页面包含一个UpdatePanel(每页1个)。当单击UpdatePanel中的按钮(它应该仅刷新UpdatePanel本身中的内容)时,它会将内容从正确的div中拉出(它实际上转到该页面)并刷新UpdatePanel中的内容,就像我访问过一样该页面本身并按下按钮。
我的问题是......
如何防止这种情况并让UpdatePanel在使用Ajax引入的页面上运行?
这是一些额外的(奇怪的)信息......
我显示加载整体布局的原始时间('5/23/2013 10:15:11 AM')。
我在一个页面中的Ajax到正确的div并显示它被加载的时间(在该页面本身但在UpdatePanel之外)('5/23/2013 10:15:17 AM')。这表明我在加载布局几秒后点击左侧div中的页面链接。
当我点击按钮刷新UpdatePanel时,它会显示我点击UpdatePanel内部按钮的时间('5/23/2013 10:15:28 AM')。此时,它将页面从右侧div拉出(好像我从头开始转到此页面)并且它保留了此页面加载到右侧div中的原始DateTime('5/23/2013 10 :上午15点17分')。
=====
我已尝试过各种形状和形式来修改UpdatePanel和ScriptManager,试图阻止它这样做,但无济于事。
我甚至尝试将UpdatePanel放在右侧div而不是每个内容页面上(这样使用Ajax加载的页面只会在发回时刷新该div)。
我确信有一种方法可以通过Ajax加载页面上的UpdatePanel,但我似乎无法在任何地方找到一个可行的示例或答案。
非常感谢任何帮助。感谢。
编辑1:
当右侧div中的内容执行PostBack(因此需要UpdatePanel)时,我们不希望在左侧div(由Ajax引入)中进行搜索。如果它从右侧div执行PostBack,则将刷新整个布局,而不仅仅是右侧div中的内容。
编辑2:
我应该澄清一点,这只是我们想要完成的一个简单例子。我们希望将右侧div(整个.aspx页面)中的内容发送到PostBack,但只能在UpdatePanel中。我们需要这个功能,以便在右侧div页面的PostBack上不刷新整个布局(顶部div,左侧div和右侧div)。
基本上,我们需要能够在正确的div中进行PostBack,而无需更改top和left div。当我们通过Ajax引入正确的页面时,右侧页面上的UpdatePanel似乎不尊重布局并突破它。
答案 0 :(得分:2)
听起来你的HTML正在加载一个完整的页面。尽管.load()将删除某些HTML元素,但它可能会插入一个额外的< title>标签等。
这是一个包含两个文件的简单示例。
以待loaded.html 强>
<!DOCTYPE html>
<html>
<head>
<title>To Be Loaded</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div id="my-div"></div>
<script>
$("#my-div").load('/load-me.html #load-me ul');
</script>
</body>
</html>
<强>负载me.html 强>
<!DOCTYPE html>
<html>
<head>
<title>Load Me</title>
</head>
<body>
<div id="load-me">
<ul>
<li>First Item</li>
<li>Second Item</li>
</ul>
</div>
</body>
</html>
执行加载调用后,div#my-div将包含load-me.html中无序列表的内容。
答案 1 :(得分:1)
例如,为什么不加载带有更新面板的正确div呢?
或
为什么不用更新面板加载右面板的一部分,还有另一个jquery ajax加载?
希望这有帮助。