书签 分享 收藏 举报 版权申诉 / 24

类型TRSWCM65二次开发004树形组件.docx

  • 文档编号:7206640
  • 上传时间:2023-05-11
  • 格式:DOCX
  • 页数:24
  • 大小:167.38KB

    重写动态载入子节点的方法

    //重写com.trs.tree.TreeNav的动态载入方法

    com.trs.tree.TreeNav.makeGetChildrenHTMLAction=function(_elElementLi){

    varnPos=_elElementLi.id.indexOf("_");

    //获取父节点的类型

    varsParentType=_elElementLi.id.substring(0,nPos);

    //获取父节点的id

    varsParentId=_elElementLi.id.substring(nPos+1);

    //返回tree_html_creator.jsp请求页面的结果,返回的结果为子节点的代码

    return"../nav_tree/tree_html_creator.jsp"+(location.search||'?

    1=1')+"&Type=0&FromSelect=0&ParentType="+sParentType+"&ParentId="+sParentId;

    }

    我们采用修改doActionOnClickA方法来实现点击节点后弹出节点名字的事件。

    在页面中我们重写com.trs.tree.TreeNav.doActionOnClickA函数,代码如下:

    com.trs.tree.TreeNav.doActionOnClickA=function(event,oSrcElement){

    varsrcElementDiv=oSrcElement.parentNode;

    com.trs.tree.TreeNav.updateNodeChildrenHTML(srcElementDiv);

    alert(oSrcElement.innerHTML);

    }

    效果如下图所示:

    2.7默认展开到指定的节点

    有时我们需要在树初始化时就展开到指定的相关的节点。

    这功能主要是在updateNodeChildrenHTML函数中实现。

    如下所示:

    //树载入完成后执行的操作expendTree

    TreeNav.observe("onload",expendTree);

    functionexpendTree(){

    //通过updateNodeChildrenHTML函数更新在站点类型节点ID为r_0,展开到栏目ID

    //为10的栏目

    TreeNav.updateNodeChildrenHTML("r_0",makeURLofGetHTMLContainsChannelIds("10"))

    }

    functionmakeURLofGetHTMLContainsChannelIds(_sNodePath){

    //给页面tree_html_creator.html传递参数,将Type设置成2,同时传入

    //channelIds参数,表示获取到channelIds的树结构

    varsAction="../nav_tree/tree_html_creator.jsp"+(location.search||'?

    1=1')+"&Type=2&FromSelect=1&ChannelIds="+_sNodePath;

    returnsAction;

    }

    其中主要是从tree_html_creator.jsp页面中返回默认展开的树结构。

    我们将参数Type设置成2,并传入需要展开的栏目ID信息ChannelIds该页面就会将构造好的HTML代码返回。

    这样树就已经展开到目标栏目了。

    不过这个展开的树默认是从站点类型开始展开的,如果我们不想从站点类型开始展开,想从当前的根节点展开到某个栏目,该怎么办呢?

    分析tree_html_creator.jsp页面我们会发现,在该页面中可以调用另一个方法:

    writeHTMLOfAPath()。

    该方法功能是按照一个节点路径依次展开。

    因此我们只需要获取到当前根节点到目标栏目父节点的路径即可(注:

    路径的获取可以通过jsp来实现,不里详细描述。

    路径中应该包含该对象的类型信息,例如s_1,c_10,c_41表示为一个路径,表示站点ID为1的站点展开到栏目ID为10的栏目,再到栏目ID为41的栏目)。

    获取到路径后,我今天将这个路径信息以参数NodeIds传递给tree_html_creator.jsp页面,如下图所示:

    //树载入完成后执行的操作expendTree

    functionexpendTree(){

    //这里需要构造路径信息,可以通过jsp不断找父节点的方法来获取

    //varpath=getPath(rootType,rootId,channelId)获取从需要展开的channelId到parentId的路径,在该路径中如果是站点就构造成s_加站点ID的形式,如果是站点类型就构造成r_加类型ID的形式,如果是栏目就构造成c_加栏目ID的形式。

    varpath='s_1,c_10,c_41';

    //这里的path表示从站点ID为1开始,展开到栏目ID为10的子栏目中,会显示ID为10的栏目的子栏目。

    TreeNav.updateNodeChildrenHTML("s_1",makeURLofGetChildrenHTML2(path));

    }

    functionmakeURLofGetChildrenHTML2(_sNodePath){

    varsAction="../nav_tree/tree_html_creator.jsp"+(location.search||'?

    1=1')+"&Type=1&FromSelect=0&NodeIds="+_sNodePath;

    returnsAction;

    }

    这样就可以获取到从指定的根节点到目标栏目的展开树了

    2.8如何选中某个节点

    WCM的树中每个节点都会有一个ID。

    这个ID的构造规则如下,假设该节点对应对象在数据库的唯一标识id=1:

    如果是站点类型:

    树节点ID=‘r_1’;

    如果是站点:

    树节点ID=’s_1’;

    如果是栏目:

    树节点ID=’c_1’;

    从上可知,节点的ID即为该节点类型的对应的前缀与其数据库id的组合。

    我们要选中某个节点可以通过如下步骤:

    1.获取该节点对应对象的id

    2.构造该节点的ID(直接从HTML代码中获取也可以)

    3.让树结构展开到对应的节点(见前一节:

    展开到指定的节点)

    4.调用js语句:

    com.trs.tree.TreeNav.focus(ID),将节点以字符串的形式传递给该方法即可

    示例:

    //假设需要选中栏目id=10的栏目

    //1.获取id

    varid=10;

    //2.构造节点ID

    varID='c_10';

    //3.让树展开到该节点

    ...

    //4.选中该树

    com.trs.tree.TreeNav.focus(ID);

    3怎么控制树节点样式

    一个树节点的的表现主要有图片,打开和收缩状态。

    这些状态是如何控制的呢?

    首先,我们需要了解节点的class属性是如何构造的。

    WCM系统中的树节点class属性由两部分组成:

    前缀和后缀。

    前缀一般用来控制节点上显示的图片,而后缀则用来控制是显示打开状态还是收缩状态。

    在每个节点中都会有一个classPre属性,该属性是用来构造节点class属性前缀用的。

    使用这个属性可以控制这个节点需要显示的图片,就像WCM系统中站点类型、站点、栏目节点的显示图片是不一样的,因为他们classPre不同。

    在展开的树节点前面会出现

    ,而在收缩的节点上会显示

    图片,这些状态标识图片都是通过class的后缀来控制的。

    节点后缀主要有两种Folder和FolderOpened。

    综上所述,我们生成后的树节点class属性为XXXFolder和XXXFolderOpened这两种,它们分别对应于收缩和关闭状态。

    其中XXX为节点的classPre属性,所以只要控制这两个class值就可以随心所欲地设置自己的树样式和图标了。

    4实战示例-构造指定站点类型开始的树

    4.1需求

    在页面中生成一个多选类型的树结构,根节点为“文字库“,点击该根节点可以显示出该节点下的站点。

    当树载入时自动展开到栏目ID为10的那一级栏目。

    4.2引入相关文件

    以上引入的为树的样式文件,控制树的图标等显示效果。

    以下为引入的js文件。

    4.3指定页面元素

    若想在指定的位置上显示树结构,需要在该位置上放置元素并将class属性设置成TreeView如class=”TreeView”,com.trs.tree.TreeNav在初始化时会自动寻找该到元素。

    在HTML页面元素中我们还需要一个空的

      元素,用来存放动态加载的内容。

      如下所示,id=”r_0”,其中r表示该节点为站点类型,数字0表示站点类型的编号。

      classPre为设置该节点的class属性前缀,用来控制显示的图标。

      (注意:

      不要在

        元素上下位置加注释等信息,这有可能导致树结构不可用)。

        --使用UL+class定义树结构开始-->

        --节点元素HTML代码-->

        1">

        文字库

      --使用UL+class定义树结构结束-->

      4.4定义树结构对象和属性

      在生成树时首先需要定义一个com.trs.tree.TreeNav类型对象,如下所示:

      //定义com.trs.tree.TreeNav对象

      varTreeNav=com.trs.tree.TreeNav;

      4.5重写动态载入方法

      动态载入子结点可以通过com.trs.tree.TreeNav.makeGetChildrenHTMLAction()来控制。

      代码如

      配套讲稿:

      如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

      特殊限制:

      部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

      关 键  词:
      TRSWCM65 二次开发 004 树形 组件
      提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
      关于本文
      本文标题:TRSWCM65二次开发004树形组件.docx
      链接地址:https://www.bingdoc.com/p-7206640.html
      关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

      copyright@ 2008-2023 冰点文库 网站版权所有

      经营许可证编号:鄂ICP备19020893号-2


      收起
      展开