您的位置:首页> 日志> 动易系统 正文
DTOP

修正取得第N级父节点ID

luosi | 2017年07月03日 |

>>收藏本文 已有 0条评论

        由于技术支持反馈一个项目中子站数量太多因而使用太多“取得第N级父节点ID”标签导致网站访问数据很慢,因此检查一下说是由于标签使用的是标签内递归原则而获取的数据拖慢响应速度,因此需要改善标签!经过数据表的查看发现可以利用ParentPath字段进行改善!初步验证改善后的可以使用!代码如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <LabelType>改进类</LabelType>
  <LabelIntro>
  </LabelIntro>
  <OutType>sin</OutType>
  <LabelDataType>sql_sysquery</LabelDataType>
  <EnabelAjax>False</EnabelAjax>
  <attributes>
    <name>nodeId</name>
    <datatype>supersql</datatype>
    <default>3942</default>
    <intro>当前节点ID</intro>
  </attributes>
  <attributes>
    <name>depth</name>
    <datatype>string</datatype>
    <default>1</default>
    <intro>节点深度</intro>
  </attributes>
  <LabelSqlString><![CDATA[SELECT ID FROM SplitID((SELECT ParentPath FROM PE_Nodes WHERE NodeID =@nodeId), ',')]]></LabelSqlString>
  <LabelTemplate><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pe="labelproc" exclude-result-prefixes="pe">
<xsl:output method="html" />
<xsl:param name="nodeId"/>
<xsl:param name="depth"/>
<xsl:template match="/">
<xsl:choose>
  <xsl:when test="count(/NewDataSet/Table) = 0"><xsl:value-of select="$nodeId"/></xsl:when>
  <xsl:otherwise>
    <xsl:for-each select="/NewDataSet/Table">
      <xsl:if test="position()=($depth + 1) and last() >= ($depth + 1)"><xsl:value-of select="ID"/></xsl:if>
      <xsl:if test="position()=1 and ($depth + 1) > last()"><xsl:value-of select="$nodeId"/></xsl:if>
    </xsl:for-each>
  </xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>]]></LabelTemplate>
  <Version officialVersion="" modifiedVersions="5600" compatibleVersion="" />
  <IsXsltSql>false</IsXsltSql>
  <IsXsltCountSql>false</IsXsltCountSql>
</root>