JavaScript触发的UpdatePanel未正确更新

时间:2011-06-20 01:44:48

标签: javascript asp.net ajax

我正在开发一个庞大而复杂的ASP.NET项目。

我有一个动态加载的Web用户控件,其UpdatePanel无法正确更新。 UpdatePanel是从JavaScript函数触发的。

我设法创建了一个非常简化的项目来演示该问题并将其发布在http://www.softcircuits.com/Client/TestProject.zip

如果对这些技术有更深入了解的人能够看一眼并指出我正确的方向,我将非常感激。

2 个答案:

答案 0 :(得分:1)

尝试在UpdatePanel的OnPreRender事件而不是OnLoad中设置文本框值。

答案 1 :(得分:1)

我想我发现了正在发生的事情。我知道UpdatePanel回发就像一个普通的回发,但只有一部分页面被发送回客户端。所以我玩了一下,发现HalfTrackMindMan提到的工作正如预期的那样。然后我向谷歌询问了有关UpdatePanels的常见错误,并找到了解释出现问题的this article

这就是实际发生的事情。

  1. __ doPostback将页面的值发布到服务器
  2. 在帖子参数中,两个文本框的值都是空白
  3. 在服务器上触发Load事件并更改文本框的文本
  4. 执行EventHandlers并在2个文本框上设置发布值(它们都重置为空白
  5. ...
  6. 使用空白值
  7. 呈现更新面板

    因此,如果您将测试放在其中一个文本框中并按下按钮,您会看到“测试”值会转到服务器并返回。

    1|#||4|356|updatePanel|MainContent_WebUserControl11_ctl00_UpdatePanel1|
            <p>
                Message:<br />
                <input name="ctl00$MainContent$WebUserControl11$ctl00$TextBox1" type="text" value="testing" id="MainContent_WebUserControl11_ctl00_TextBox1" />
            </p>
    

    因此,要在更新面板中更新input元素的值,您需要在Pre_render事件中执行此操作。另一方面,您可以更新on_load上的标签,它将起作用。

    希望有所帮助。