一个不错的文本输入框TinyMCE + 我写的辅助控件(修改版)

官方网站:
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" %>

使用
<cc1:tinymce id="tm" runat="server" path="jscripts"></cc1: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
 }
}

posted on 2005-07-17 12:22  Notus|南色的风  阅读(2646)  评论(12编辑  收藏  举报