UpdatePanel重新呈现表单

时间:2009-03-25 14:49:21

标签: c# asp.net

我有一个看起来像这样的ascx:

<UpdatePanel Parent mode = Conditional>
  <UpdatePanel1 mode = Conditional>
    //A form here with textboxes, etc

    //A repeater here with a linkbutton that causes a postback

  </UpdatePanel1>
</UpdatePanel Parent>

在转发器的OnItemCommand中,我获取表单值并设置它们。它工作正常,但有重新渲染的形式(即,一个闪烁的形式消失并重新出现)。考虑到我在UpdatePanel中有这个问题,为什么会这样?

修改: 我似乎有一半通过将表单和转发器分成不同的更新面板来解决问题。但是,现在的问题是,即使服务器端代码运行,当我点击转发器中的链接按钮时,表单也不会更新。

再次编辑:

我想我知道发生了什么事。在确定之前我有一个问题(希望如此)。表格如下:

<tr>
  <td>
    <asp:checkbox id="chkSelect" runat="server" />
    <asp:label text="Something"   runat="server" />
    <asp:textbox id="txtSomething" runat="server" />
  </td>
</tr>
<tr>
  <td>
    <asp:checkbox id="chkSelect2" runat="server" />
    <asp:label text="Something2"   runat="server" />
    <asp:textbox id="txtSomething2" runat="server" />
  </td>
</tr>

点击链接按钮时我所关心的只是更新文本框控件。我希望其他一切都保持原样。

有没有办法只在那些控件上有条件地触发更新?

我知道我可以使用JS但宁愿避免它(因为在我知道文本框的值之前有很多服务器端处理)

@Roselberg - 我不感兴趣的控件的状态,实际上是在一个巨大的JS脚本中设置在客户端,该脚本在加载时运行,我真的没有太多的控制权通过脚本

2 个答案:

答案 0 :(得分:0)

如果您只想有条件地更新文本框,则需要将它们放在自己的UpdatPanel中。确保链接按钮触发了这些UpdatePanel,一切都应该正常。

虽然我不确定你的意思

  

我希望其他一切都能保持下去   他们的方式。

只有在回发期间有更改代码的代码时,复选框和标签才会更改。

答案 1 :(得分:0)

ASP.NET AJAX的体系结构实际上覆盖了UpdatePanel中的整个html。它不会单独更新值。基本上,有三种选择:

  • 将文本框和复选框放在单独的更新面板中。看起来这对您的方案不起作用。
  • 确保在回发时传输值以确保控件保持相同的显示。它们实际上会被覆盖,但是如果它们被相同的值覆盖,那么这不应该是显而易见的。
  • 使用不同的AJAX方法回调处理程序,而不是使用ASP.NET AJAX。使用javascript调用处理程序,然后单独更新值,而不是像ASP.NET AJAX那样替换控件。使用jquery get methodclient callbacks
  • 可以轻松完成此操作