• FCKeditor只读与编辑状态切换的不完全解决方案[原创]


    1、首先在FCKeditor目录下的fckconfig.js文件,添加Readonly模式(可以将页面中的FCKeditor控件的ToolbarSets属性设置为“Readonly”,需要编辑时在代码中更改为“Default”):

    FCKConfig.ToolbarSets["Readonly"] = [
    [
    'Preview','Print']
    ] ;

    2、FCKeditor两种模式切换的函数:

    private void ModFCKEditor(Boolean YN)
    {
    if (YN) //可编辑状态
    {
    string jsReadOnly = @"function FCKeditor_OnComplete( editor )
    {
    editor.EditorDocument.body.contentEditable = true;
    editor.EditMode=FCK_EDITMODE_SOURCE;
    editor.ToolbarSet.RefreshModeState();
    editor.EditMode=FCK_EDITMODE_WYSIWYG;
    editor.ToolbarSet.RefreshModeState();
    }
    ";
    ClientScript.RegisterStartupScript(
    this.GetType(), "", "<script language=javascript>" + jsReadOnly + "</script>");
    }
    else //只读状态
    {
    string jsEnable = @"function FCKeditor_OnComplete( editor )
    {
    editor.EditorDocument.body.contentEditable = false;
    editor.EditMode=FCK_EDITMODE_SOURCE;
    editor.ToolbarSet.RefreshModeState();
    editor.EditMode=FCK_EDITMODE_WYSIWYG;
    editor.ToolbarSet.RefreshModeState();
    }
    ";
    ClientScript.RegisterStartupScript(
    this.GetType(), "", "<script language=javascript>" + jsEnable + "</script>");
    }
    }

    3、用ViewState控制FCKEditor的状态(记得在程序中控制状态,然后在需要的时候调用:this.ModFCKEditor(enableEditor);):

    public Boolean enableEditor
    {
    get { return ViewState["enableEditor"] == null ? false : (Boolean)ViewState["enableEditor"]; }
    set { ViewState["enableEditor"] = value; }
    }

    4、我的做法是将FCKeditor放在div里面,页面加载的时候该div是隐藏的,当点击查看的时候就显示div且FCKeditor为只读状态,当点编辑按钮时将FCKeditor的ToolbarSets属性设置为“Default”,将enableEditor设置为True,再调用this.ModFCKEditor(enableEditor)

    5、数据显示我用的是GridView,控制列如下:

    <asp:TemplateField HeaderText="Operation" ItemStyle-Width="120">

    <ItemTemplate>

    <div>

    &nbsp;&nbsp;&nbsp;&nbsp;<%# DataBinder.Eval(Container.DataItem, "ID", "<a href=/ViewDocs.aspx?DOCID={0}>查看</a>")%>
    &nbsp;&nbsp;&nbsp;&nbsp;<asp:LinkButton ID="btnDeleteRow" runat="server" Text="删除" CommandArgument="<%# Container.DataItemIndex %>" CommandName="Delete" OnClientClick="Javascript:return confirm('是否确定删除此文档?');" />

    </div>
    </ItemTemplate>

    </asp:TemplateField>

    说明:查看功能转到的页面仍是当前页面,只不过此时带了参数!所以我用ViewState记录了FCKeditor的状态!

    就这么多了,希望对大家有所帮助!

  • 相关阅读:
    BZOJ 2048 2009国家集训队 书堆 数学算法
    maven自动打包上传nexus仓库配置
    让maven项目使用nexus作为远程仓库
    python备份网站,并删除指定日期文件
    Linux系统下yum镜像源环境部署记录
    nginx下后端节点realserverweb健康检测模块ngx_http_upstream_check_module
    Linux新系统的安全优化和内核参数优化
    linux挂载磁盘
    LVS负载均衡下session共享的实现方式-持久化连接
    使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
  • 原文地址:https://www.cnblogs.com/mic86/p/1789089.html
Copyright © 2020-2023  润新知