官方网站:
http://tinymce.moxiecode.com/
在线示例:
http://tinymce.moxiecode.com/example_full.php?example=true
该示例使用的是Advanced Theme Full 模式。
提供下载的压缩包内包含有详细的文档说明,大家可以根据需要自己设置成合适使用的样式,而不必像ftb等控件一样非要把那么多按钮都排列在页面上,并且更重要的是,这个是完全用js实现的,因此在页面的显示速度是很快的!
我为这个写了个辅助的控件,使其使用起来更加的方便。控件的使用方法是先去网站下载整个的压缩包,然后把其中的tinymce\jscripts复制到web目录下,然后把我写的控件拖到页面上,设置好jscripts文件夹的路径,就可以用了。
示例:
我的jscripts文件夹相对于web目录的位置是jscripts,所以就这样设置
注册
<%@ Register TagPrefix="cc1" Namespace="Stella2" Assembly="TinyMce" %><%@ Register TagPrefix="cc1" Namespace="Stella2" Assembly="TinyMce" %>
使用
最后取值的时候是这样:
this.Label1.Text=this.tm.Text;
下面是我写的那个辅助控件,大家自己回去编译一下吧,这可不是我偷懒,实在是我的这台机器上没有ftp,没办法上传啊
由于时间不多,所以很多注释和功能都没有加上,如果以后有时间,就把这个控件再完善一下。
有使用上的问题就在这里留言好了
修改说明:
今天作东西突然发现昨天犯了一个很傻的错误,竟然没有加给文本框赋初始值的功能......不过现在就好了,所作的修改就一句而已,我在那里加了注释
附:辅助控件的源码
using System;
using System.Web;
using System.Text;
using System.Web.UI.WebControls;
namespace Stella2
{
public class TinyMce : System.Web.UI.Control,System.Web.UI.IPostBackDataHandler
{
private string text;
public string Text
{
set{this.text= value;}
get{return text;}
}
//这里默认的路径是这样设置的,如果您恰好用了这个路径,那就不用再设置path了
private string path=@"tinymce/jscripts";
public string Path
{
set{this.path= value;}
get{return path;}
}
private string cols="50";
public string Cols
{
get{return cols;}
set{this.cols= value;}
}
private string rows="15";
public string Rows
{
get{return rows;}
set{this.rows= value;}
}
private string mode="textareas";
public string Mode
{
get{return mode;}
set{this.mode= value;}
}
//有很多theme可以选,比如 simple
private string theme="advanced";
public string Theme
{
get{return theme;}
set{this.theme= value;}
}
//这个是要自己定义的时候使用的,感觉如果要用这个了,还不如不使用这个控件而直接在页面上写js代码算了
private string style="";
public string Style
{
get{return style;}
set{this.style= value;}
}
protected override void Render(System.Web.UI.HtmlTextWriter w)
{
w.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Table);
w.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Tr);
w.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Td);
w.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Name,this.UniqueID);
w.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Cols,cols);
w.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Rows,rows);
w.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.Textarea);
//修改版在这里加了一句,这样就可以给这个文本框赋初始值了
w.Write(text);
w.RenderEndTag();
w.RenderEndTag();
w.RenderEndTag();
w.RenderEndTag();
}
private StringBuilder script;
private StringBuilder sb;
private void init()
{
sb=new StringBuilder();
sb.Append(@"mode : '");
sb.Append(mode);
sb.Append("',");
sb.Append(@"theme : '");
sb.Append(theme);
sb.Append("'");
script=new StringBuilder();
script.Append(@"<script language='javascript' type='text/javascript' src='");
script.Append(path);
script.Append(@"/tiny_mce/tiny_mce.js'></script>");
script.Append(@"<script language='javascript' type='text/javascript'>");
script.Append(@"tinyMCE.init(");
script.Append(@"{");
script.Append( style!=""?style:sb.ToString() );
script.Append(@"});");
script.Append(@"</script>");
Page.RegisterClientScriptBlock("tm",script.ToString());
}
protected override void OnLoad(EventArgs e)
{
init();
}
#region IPostBackDataHandler 成员
public void RaisePostDataChangedEvent()
{
}
public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
text=postCollection[postDataKey];
return false;
}
#endregion
}
}