回发后保留值
本文关键字:保留 | 更新日期: 2023-09-27 18:29:58
我有一个ASP.NET网站,其代码类似于以下代码:
.aspx
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
<table id="RatesTable">
<tr>
<td>Hotel</td>
<td> </td>
</tr>
<tr id="NewRateRow">
<td>
<asp:DropDownList ID="TxtHotel" runat="server" OnSelectedIndexChanged="TxtHotel_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
</td>
<td>
<a href="javascript:AddHotelPackRate()">Add</a>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
AddHotelPackRate JS函数,读取下拉列表中的值,并在表的开头"绘制"一个新行,其中包含此值。问题是,在这之后,当再次执行SelectIndexChanged函数时,以前添加的行现在消失了。
有没有办法避免回发后丢失此类信息?
您要么必须在更新面板中添加JS添加的内容,要么需要添加JS代码在回发中添加的任何数据,以便在重新绘制数据时它仍然存在。
简单的方法可能只是让AddHotelPackRate
引起更新面板,通过服务器端代码和任何其他数据库等添加行。改变,使其继续存在。
编辑:另一条评论也提出了这样一个事实,即当所选项目发生变化时,您无法更新更新面板,从而完全避免了问题(以不同的方式)。
问题是您没有在更新面板中添加触发器。将您的代码更改为:
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
<table id="RatesTable">
<tr>
<td>Hotel</td>
<td> </td>
</tr>
<tr id="NewRateRow">
<td>
<asp:DropDownList ID="TxtHotel" runat="server" OnSelectedIndexChanged="TxtHotel_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
</td>
<td>
<a href="javascript:AddHotelPackRate()">Add</a>
</td>
</tr>
</table>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TxtHotel" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>