我有一个带有textearea,两个列表框和一个按钮的对话框弹出窗口。通过在第一个列表框中选择一个值并按下“>”按钮选定的值将传递到第二个列表框。这是通过asp.net ajax完成的。
<td>
<div align="center">
<textarea style="height:50px; overflow:hidden;";rows="20"
cols="40"
id="editor1"
class="tinymce">
</textarea>
</div>
</td>
我把2个列表框和按钮放在asp.net uploadpanel之间。像这样:
<td>
<asp:UpdatePanel runat="server" id="updatePanel1">
<ContentTemplate>
<table width="100%" align="left">
<tr>
<td colspan="5">
<hr align="left" style="width:95%" />
</td>
</tr>
<tr>
<td valign="top">
<cc1:SWCListBox
ID="SWCListBox1"
runat="server"
Width="100"
SelectionMode="Single"
CssClass="VW1">
</cc1:SWCListBox>
</td>
<td
valign="top"
width="50"
align="center">
<cc1:SWCButton
Text=" > "
ID="SWCBtnAddValue"
CssClass="VW1 VWButton"
runat="server"
ToolTip="Add to list"
OnClick="AddValue_Click"
CausesValidation="false"
/>
<td valign="top">
<cc1:SWCListBox
id="SWCListBox2"
CssClass="VW1"
runat="server"
Width="100"
SelectionMode="Single"
/>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
问题在于,当我在textarea中键入内容并进行异步回发时,文本键入会消失。
如何将textarea值保留在异步回发中? 谢谢。
答案 0 :(得分:1)
此问题是因为您使用UpdatePanel,而textarea不是asp.net控件。你有两个解决方案。
1)通过放置run =“server”(或)来使其成为asp.net控件 2)将后置值手动放置为:
<div align="center">
<textarea style="height:50px; overflow:hidden;";rows="20"
cols="40"
id="editor1"
name="editor_1"
class="tinymce">
<asp:Literal runat="server" id="txtEditor1" />
</textarea>
</div>
以及
背后的代码txtEditor1.Text = Server.HtmlEncode(Request.Form["editor_1"].ToString());
(因为你使用UpdatePanel,重要的是使用Literal来添加这个值而不使用<%=%>
,否则会抛出错误。