我使用 UpdatePanel 刷新带有一些搜索结果的数据网格,但不起作用,整个页面进入回发状态。 我希望有人可以帮助我,不能让它正常工作。.谢谢。这是我的代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" class="pageTitle" valign="top">
<twc:LocalizedLiteral Text="CRMcontxt6" runat="server" />
</td>
</tr>
<tr align="left" style="background-color: #9bbbe3">
<td align="left" colspan="3">
<asp:Label ID="lblSearch" Height="15" runat="server" Font-Bold="true" Font-Size="11"></asp:Label>
<asp:TextBox Width="500px" ID="Search" autoclick="BtnSearch" runat="server" CssClass="boxDesign" />
<asp:LinkButton ID="BtnSearch" runat="server" CssClass="save" />
</td>
</tr>
</table>
<asp:datagrid id="searchresults" runat="server">
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnSearch" />
</Triggers>
</asp:UpdatePanel>
这看起来像一个熟悉的.NET Bug。在 LinkButton 上设置 ClientIDMode="AutoID" 应该可以修复它(顺便说一下,您可以删除触发器。 不需要)。
一些解决方案:
a. 尝试在 UpdatePanel 中提供UpdateMode = Conditional
,并尝试(当您给出触发器时)你必须定义这个 )
b. 尝试删除<table>
,并将其替换为<div>
,有时更新面板对表标签不友好。
三.如果上述不起作用,请首先尝试删除触发器和更新模式条件,看看是否有效。因为如果这不起作用,则意味着更新面板中的内容有问题。您可能希望从一些控件开始,以深入了解您的问题。
d.我看到用户控件被调用 - 检查这些用户控件中是否正确放置了更新面板。
在 UpdatePanel 中使用以下命令:
UpdateMode="Conditional" ChildrenAsTriggers="true"
检查您的 HTML 源代码是否没有 2 个或更多 <form>
标记。asp.net 页面通常应该只有一个<form>
标记。
虽然这个问题到目前为止一直没有答案,但我遇到了类似的问题,但发现了更新面板不起作用的原因:
当您在某个 HTML 段中具有 <form>
标记,然后将该 HTML 片段插入母版页的现有 <form>
标记中时,您会遇到问题。每次运行母版页的子页并单击提交按钮时,按钮应运行的代码都不会执行。相反,尽管有更新面板,整个页面都会刷新,并且它还可能在页面的 URL 中添加查询字符串。
母版页的嵌套<form>
标记是导致此问题的原因。一旦您删除了额外的<form>
标签,一切应该都可以正常工作。
希望这对某人有所帮助。
您错过了触发事件。触发器应如下所示
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnSearch" EventName="Click" />
</Triggers>
不要忘记将更新面板的UpdateMode
属性设置为Conditional
下面是一个参考 :: 在 ASP.NET 4.0 C# 中的 UpdatePanel 中使用触发器