前台代码:<table width="100%">
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblTitle" runat="server" Text="标 题:"></asp:Label>
</td>
<td align="left" style="width: 400px">
<asp:TextBox ID="txtTitle" runat="server" Width="400px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" style="width: 80px" valign="top">
<asp:Label ID="lblContent" runat="server" Text="内 容:"></asp:Label>
</td>
<td colspan="3">
<FCKeditorV2:FCKeditor ID="fckContent" runat="server" DefaultLanguage="zh-cn" Height="240px"
Width="100%">
</FCKeditorV2:FCKeditor>
</td>
</tr>
</table>
<table width="100%">
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblMainPageImg" runat="server" Text="首页图片:" Visible="false"></asp:Label>
</td>
<td>
<asp:RadioButtonList ID="radMainPage" runat="server" RepeatDirection="Horizontal"
Style="float: left" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"
AutoPostBack="true" Visible="false">
<asp:ListItem Text="是" Value="True"></asp:ListItem>
<asp:ListItem Text="否" Value="False" Selected="True"></asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblImgUrl" runat="server" Text="图片路径:" Visible="false"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtImgUrl" runat="server" Width="320px" Visible="false"></asp:TextBox>
</td>
</tr>
</table>后台代码: protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (radMainPage.SelectedValue.ToString().Equals("True"))
{
lblImgUrl.Visible = true;
txtImgUrl.Visible = true;
}
else
{
lblImgUrl.Visible = false;
txtImgUrl.Visible = false;
}
}
如果把以上代码放到一个自定义用户控件中并在其他页面引用时,当设置是否首页显示图片时(RadioButtonList 改变时),FCKeditor 中的内容会丢失,如果只在一个页面中显示的话,RadioButtonList 改变时,FCKeditor 中的内容却不会丢失。奇怪了?????????。究竟哪里的问题呢??????
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblTitle" runat="server" Text="标 题:"></asp:Label>
</td>
<td align="left" style="width: 400px">
<asp:TextBox ID="txtTitle" runat="server" Width="400px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" style="width: 80px" valign="top">
<asp:Label ID="lblContent" runat="server" Text="内 容:"></asp:Label>
</td>
<td colspan="3">
<FCKeditorV2:FCKeditor ID="fckContent" runat="server" DefaultLanguage="zh-cn" Height="240px"
Width="100%">
</FCKeditorV2:FCKeditor>
</td>
</tr>
</table>
<table width="100%">
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblMainPageImg" runat="server" Text="首页图片:" Visible="false"></asp:Label>
</td>
<td>
<asp:RadioButtonList ID="radMainPage" runat="server" RepeatDirection="Horizontal"
Style="float: left" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"
AutoPostBack="true" Visible="false">
<asp:ListItem Text="是" Value="True"></asp:ListItem>
<asp:ListItem Text="否" Value="False" Selected="True"></asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblImgUrl" runat="server" Text="图片路径:" Visible="false"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtImgUrl" runat="server" Width="320px" Visible="false"></asp:TextBox>
</td>
</tr>
</table>后台代码: protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (radMainPage.SelectedValue.ToString().Equals("True"))
{
lblImgUrl.Visible = true;
txtImgUrl.Visible = true;
}
else
{
lblImgUrl.Visible = false;
txtImgUrl.Visible = false;
}
}
如果把以上代码放到一个自定义用户控件中并在其他页面引用时,当设置是否首页显示图片时(RadioButtonList 改变时),FCKeditor 中的内容会丢失,如果只在一个页面中显示的话,RadioButtonList 改变时,FCKeditor 中的内容却不会丢失。奇怪了?????????。究竟哪里的问题呢??????
FCKeditor 存放内容在客户端控件里,如果页面回发,内容就会丢失
<asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional">
<ContentTemplate>
<table width="100%">
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblMainPageImg" runat="server" Text="首页图片:" Visible="false"></asp:Label>
</td>
<td>
<asp:RadioButtonList ID="radMainPage" runat="server" RepeatDirection="Horizontal"
Style="float: left" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"
AutoPostBack="true" Visible="false">
<asp:ListItem Text="是" Value="True"></asp:ListItem>
<asp:ListItem Text="否" Value="False" Selected="True"></asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblImgUrl" runat="server" Text="图片路径:" Visible="false"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtImgUrl" runat="server" Width="320px" Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtImgUrl"
Display="Dynamic" ErrorMessage="图片路径不能为空!">图片路径不能为空!</asp:RequiredFieldValidator>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
这说明你的外边的UpdatePanel过于托大了,它没有那么大能力(来管理本不该刷新的部分),不要把它搞那么大。
如果无法刷新,就把UpdatePanel分得细一些。实际上这也会让程序显示快一点。在后台,你可以用代码来刷新一组你需要刷新的UpdataPanel。所以把UpdataPanel分细一些并不会影响什么。
<script type="text/javascript">
function show_Lb_img() {
var Rbt = document.getElementById("tb_true");
var Rbf = document.getElementById("tb_false");
var lblImgUrl = document.getElementById("lblImgUrl");
var txtImgUrl = document.getElementById("txtImgUrl");
if (Rbt.checked) {
lblImgUrl.style.display = "";
txtImgUrl.style.display = "";
}
if (Rbf.checked) {
lblImgUrl.style.display = "none";
txtImgUrl.style.display = "none";
}
}
</script>
<table width="100%">
<tr>
<td align="right" style="width: 80px">
<asp:Label ID="lblMainPageImg" runat="server" Text="首页图片:" Visible="false"></asp:Label>
</td>
<td>
<input type="radio" onclick="show_Lb_img()" id="tb_true" name="Rb_show" value="0" runat="server" />是
<input type="radio" onclick="show_Lb_img()" id="tb_false" name="Rb_show" value="1" runat="server" checked="true" />否
</td>
</tr>
<tr>
<td align="right" style="width: 80px">
<asp:Label style="display: none" ID="lblImgUrl" runat="server" Text="图片路径:"></asp:Label>
</td>
<td>
<asp:TextBox style="display: none" ID="txtImgUrl" runat="server" Width="320px"></asp:TextBox>
</td>
</tr>
</table>