第五十三章 开发自定义标签 - Using csr %cspQuote Methods

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介: 第五十三章 开发自定义标签 - Using csr %cspQuote Methods

第五十三章 开发自定义标签 - Using csr %cspQuote Methods

Using csr %cspQuote Methods

%cspQuote例程定义包含两个不同引用方法的定义。

  • Quote
  • QuoteCSP

Quote Method

$$Quote^%cspQuote(line As %String)
复制代码

用引号将输入字符串括起来。

QuoteCSP Method

$$QuoteCSP^%cspQuote(line As %String)
复制代码

用引号将输入字符串括起来,并解析#()###()###''##server#url调用。

创建<grid>标记以显示表格

本节包含一个名为GridExample的规则示例,它创建了两个标记,这两个标记在CSP页面上创建了一个信息表。

  • <GRID> tag
  • <GRIDDATA>tag

Grid Rule Definition

<csr:rule name="GridExample" match="GRID">
<csr:action>
<script language =Cache runat=compiler>
    Set maxrows=##this.GetAttribute("COLS")
    Set maxcols=##this.GetAttribute("ROWS")
    Do ..WriteText("<TABLE>",1)
    Set GRIDDATA=""
    ;Get Grid Data
    Set count=##this.Children.Count()
    For i=1:1:count {
         Set el=##this.Children.GetAt(i)
         Set tagname=el.TagName
         If tagname="GRIDDATA" {
             Set value=el.GetAttribute("VALUE")
             Set col=el.GetAttribute("COL")
             Set row=el.GetAttribute("ROW")
             Set GRIDDATA(row,col)=value
         }
    }
    ; Write Grid Elements
    For row=1:1:maxrows {
        Do ..WriteText("<TR>",1)
        For col=1:1:maxcols {
            Set d=$G(GRIDDATA(row,col))
            Do ..WriteCSPText("<TD>"_d_"</TD>",1)
        }
    }
    Do ..WriteText("</TR>",1)
    Do ..WriteText("</TABLE>",1)
</SCRIPT>
</csr:action>
</csr:rule>
复制代码

虽然<GRIDDATA>属性在<GRID>的规则定义中被处理,但仍然需要一个空规则来实例化<GRIDDATA>标记:

<csr:rule name="GridDataExample" match="/GRID/GRIDDATA">
<csr:description>
This purpose of this empty rule is to instantiate the GRIDDATA tag
into the Document Object Model.
</csr:description>
<csr:action>
<csr:default>
</csr:action>
</csr:rule>
复制代码

Generated Grid Class

上述规则定义编译成以下两个类:

  • Grid
  • GridData
Import User
Class csr.csp.GridExample Extends %CSP.Rule
{
Parameter CSRURL = "/csp/user/GRIDEXAMPLE.CSR";
Method CompilerMethod1() [ Language = cache ]
{
     Set maxrows=##this.GetAttribute("COLS")
     Set maxcols=##this.GetAttribute("ROWS")
     Do ..WriteText("<TABLE>",1)
     Set GRIDDATA=""
     ;Get Grid Data
     Set count=##this.Children.Count()
     For i=1:1:count {
         Set el=##this.Children.GetAt(i)
         Set tagname=el.TagName
         If tagname="GRIDDATA" {
             Set value=el.GetAttribute("VALUE")
             Set col=el.GetAttribute("COL")
             Set row=el.GetAttribute("ROW")
             Set GRIDDATA(row,col)=value
         }
     }
     ; Write Grid Elements
     For row=1:1:maxrows {
         Do ..WriteText("<TR>",1)
         For col=1:1:maxcols {
             Set d=$G(GRIDDATA(row,col))
             Do ..WriteCSPText("<TD>"_d_"</TD>",1)
         }
     }
     Do ..WriteText("</TR>",1)
     Do ..WriteText("</TABLE>",1)
}
Method RenderStartTag() As %Status
{
 New element Set element=##this
 Set %statuscode=$$$OK Do ..CompilerMethod1()
 Quit:$$$ISERR(%statuscode) %statuscode
 Quit $$$SKIPCHILDREN
}
}
复制代码

GridData Class

Import User
Class csr.csp.GridDataExample Extends %CSP.Rule
{
Parameter CSRURL = "/csp/user/GRIDEXAMPLE.CSR";
Method RenderEndTag() As %Status
{
 New element Set element=##this
 Do ..RenderDefaultEndTag()
 Quit $$$OK
}
Method RenderStartTag() As %Status
{
 New element Set element=##this
 Do ..RenderDefaultStartTag()
 Quit $$$PROCESSCHILDREN
}
}
复制代码

Using the Grid Rule

网格规则现在可以用在CSP页面的正文中:

<html>
<head>
<title>Grid Example</title>
</head>
<body>
<grid cols="5" rows="5">
<griddata value="Cell-1-1" col="1" row="1">
</griddata>
<griddata value="Cell-2-1" col="2" row="1">
</griddata>
<griddata value="Cell-2-2" col="2" row="2">
</griddata>
<griddata value="Cell-2-3" col="2" row="3">
</griddata>
<griddata value="Cell-2-4" col="2" row="4">
</griddata>
<griddata value="Cell-2-5" col="2" row="5">
</griddata>
<griddata value="Cell-3-1" col="3" row="1">
</griddata>
<griddata value="Cell-4-1" col="4" row="1">
</griddata>
<griddata value="Cell-4-3" col="4" row="3">
</griddata>
<griddata value="Cell-5-1" col="5" row="1">
</griddata>
<griddata value="Cell-5-5" col="5" row="5">
</griddata>
</grid>
</body>
</html>
复制代码

Grid Rule Displayed Page

CSP页面现在显示以下内容:

Cell-1-1 Cell-2-1 Cell-3-1 Cell-4-1 Cell-5-1
           Cell-2-2
           Cell-2-3          Cell-4-3
           Cell-2-4
           Cell-2-5                   Cell-5-5


相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
5月前
|
JSON 前端开发 API
全面解析:Webhooks 和 APIs 的主要区别
作为人类,我们希望技术能帮助我们更快捷、更便捷地与更多人交流。但要实现这一目标,我们首先需要找到一种方法让技术能够彼此对话。
Vue-Cli的生命周期写法,methods要与data()平级,生命周期函数要与methods平级
Vue-Cli的生命周期写法,methods要与data()平级,生命周期函数要与methods平级
|
6月前
|
机器学习/深度学习 JSON 移动开发
详细解读BootStrap智能表单系列八表单配置json详解
详细解读BootStrap智能表单系列八表单配置json详解
39 0
|
JavaScript 前端开发 安全
vue中解决ajax跨域问题(no “access-control-allow-origin”)
产生原因 跨域是是因为浏览器的同源策略限制,是浏览器的一种安全机制,服务端之间是不存在跨域的。 所谓同源指的是两个页面具有相同的协议、主机和端口,三者有任一不相同即会产生跨域。
317 0
|
Web App开发 移动开发 算法
Crack App | 某保险资讯 App 请求头参数 token 与 sign 加密算法分析
Crack App | 某保险资讯 App 请求头参数 token 与 sign 加密算法分析
116 0
|
存储 小程序
【小程序】自定义组件的data、methods、properties
【小程序】自定义组件的data、methods、properties
400 0
【小程序】自定义组件的data、methods、properties
|
测试技术 Python
Django Template层之自定义tag
Django Template层之自定义tag
68 0
|
小程序 容器
【微信小程序】全局样式文件app.wxss、页面的根元素page、 app.json中的window配置项
哈喽大家好,本期是微信小程序专栏第七期,本期主要是通过设置页面背景颜色、设置导航栏颜色来学习全局样式文件app.wxss、页面的根元素page、 app.json中的window配置项。
|
JavaScript
Vue/vant——用axios获取header头中的token值以及权限的配置
用axios获取header头中的token值以及权限的配置
309 0
|
JavaScript 前端开发 Go
第四十八章 开发自定义标签 - 在action中使用csr标签
第四十八章 开发自定义标签 - 在action中使用csr标签
76 0