因为anthem控件使用的是无刷新技术,而FCKeditor需要通过提交form来实现取值(即无法直接通过FCKeditor1.value这样的方法来获取编辑器里头的内容),所以提交表单时始终无法正确地获取编辑器的值或者对其赋值。。通过查询资料和不断的摸索,最终使问题得到比较完美的解决。
前提:在页面上放一个FCKeditor编辑器,取ID为"fckEdit",放入一个anthem的textbox控件,取ID为"fckTmp",并设置其的属性:style="VISIBILITY: hidden" AutoUpdateAfterCallBack="True" TextMode="MultiLine"。思路是浏览数据时,读取数据同时用js对FCKeditor编辑器进行赋值。保存数据时将编辑器的值在提交前赋予textbox控件,后台通过读取textbox的值进行相关的处理。srxljl 1、取值 在anthem的提交按钮的OnClientClick事件中,调用如下函数: function getVal(){ var oEditor = FCKeditorAPI.GetInstance("fckEdit"); document.getElementById("fckTmp").value= oEditor.GetXHTML(true); // 此处GetXHTML函数的参数不能用FCKConfig.FormatOutput,否则ajax效果失败! } 此时后台处理函数获取的值是通过textbox控件"fckTmp"而得到的。
2、赋值 此时后台从数据库获取数据后,无法直接通过fckEdit.value对其进行赋值,而是要通过js代码实行。 .... // 后台C#函数,取出数据
Anthem.Manager.AddScriptForClientSideEval("var oEditor = FCKeditorAPI.GetInstance('fckEdit');oEditor.SetHTML('"+ strVal +"',true);"); .... 总结:网上有不少方法可以在ajax效果下获取到编辑器的内容。最简单的莫过于调用官方的接口,在提交数据之前执行js代码:
FCKeditorAPI.GetInstance('frmEntity_editor_content').GetXHTML(FCKConfig.FormatOutput); 不过此方法不适合使用anthem控件的环境下。提交数据时可发现ajax效果无效了。牵涉到anthem函数的执行机制,在此不予评论。上面是我想到的最简单办法,如果有哪位朋友有更好的解决方法,请留言指点!