Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UpdatePanel重新加载窗体_C#_Asp.net - Fatal编程技术网

C# UpdatePanel重新加载窗体

C# UpdatePanel重新加载窗体,c#,asp.net,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 P

我有一个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>
<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>

//这里有一个带有文本框等的表单
//这里的中继器有一个链接按钮,可以引起回发
在中继器的OnItemCommand中,我获取表单值并设置它们。它工作正常,但会重新渲染窗体(即,窗体消失并重新出现的闪烁)。考虑到我在UpdatePanel中有它,为什么会发生这种情况

编辑: 通过将表单和repeater分离到不同的UpdatePanel中,我似乎已经解决了一半的问题。但是,现在的问题是,当我单击中继器中的链接按钮时,即使服务器端代码运行,表单也不会得到更新。

再次编辑:

我想我知道发生了什么。在确定这一点之前,我有一个问题(希望如此)。表单如下所示:

<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>
<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>

单击linkbutton时,我所关心的只是只更新textbox控件。我希望其他一切都保持原样

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

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


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

如果您只想有条件地更新文本框,那么您需要将它们放在自己的更新面板中。确保那些UpdatePanel是由链接按钮触发的,并且一切正常

虽然我不太清楚你说的是什么意思

我希望其他一切都保持不变 他们是这样的


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

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

  • 将文本框和复选框放在单独的更新面板中。看起来这对你的场景不起作用
  • 确保在回发时传输值,以确保控件保持相同的显示。它们实际上会被覆盖,但如果它们被相同的值覆盖,这应该不会被注意到
  • 使用不同的AJAX方法调用处理程序,而不是使用ASP.NET AJAX进行这些调用。使用javascript调用处理程序,然后单独更新值,而不是像ASP.NET AJAX那样替换控件。使用or很容易做到这一点

1个文本框的更新面板?这不是过分了吗?我想将所有这些内容组合到一个updatepanel中,但布局阻止我这样做。我希望有办法指定UpdatePanel应该更新的控件集合。没有办法指定要更新的控件。它们必须是UpdatePanel的子级。在第三种方法中,我可以使用jquery在代码隐藏中调用eventhandler吗?我以前没有使用过get方法:(您可以使用客户端回调(内置ASP.NET功能,不使用jQuery)调用codebehind中的方法)。我在上面的最后一个项目符号中添加了指向示例的链接。。。