引入硕正
页面
//在initialize中
var opt = Wb.getUuid();
//在finalize中
var mt1 = bldStr("BCV1.TreeList", opt, "", "100%");
app.panel.update(mt1);
window["init" + opt] = function(id) {
var m = document.getElementById(opt);
if (id == opt) {
m.func("Build", '/supcan/report/businessManagement/businessFee.xml?' + Math.round(Math.random() * 100));
m.func("DisableMenu", "showRuler,exportAll,printAll,delete,insert,import ,curselMode,hue ,language , enter \r\n true");
m.func("EnableMenu", " curselMode \r\n true");
var values = Wb.getValue(app.panelBtn);
m.func('Load', Wb.loadSupcanData('m?xwl=bookingManagement/bookingManagementData/onlineBookingData/selectBookingConfirmSupcan', values));
}
};sql.xwl
//sql.xwl中
var obj = Wb.getRecords(app.run(Sql, {
jndi: 'default'
}));
app.send(obj);后端
//放入xml文件
<?xml version="1.0" encoding="utf-8"?>
<TreeList>
<Fonts>
<Font/>
<Font faceName="Verdana" weight="700"/>
</Fonts>
<Properties isShowRuler="true" curselmode="rows" isFixTotalRow ="true" rowHeight="35" subtotalBgColor="#d3d3d3"
displayMask="backColor=if(CARRY_FLAG='1',#87cefa,if(WEB_SAVE_MAN!='',#d8cef7,#E8EAEF))">
</Properties>
<Cols>
<Col name="BILL_NO" width="140">提单号</Col>
<Col name="CARRY_FLAG" width="65" isHide="true" edittype="droplist" droplistID="carryF">载运属性</Col>
<Col name="WEB_SAVE_MAN" width="120">保存人</Col>
<Col name="ID" width="140" isHide='true'>提单号id</Col>
</Cols>
<DropLists>
<DropList id="carryF">
<item key='0'>正常</item>
<item key='2'>漏装</item>
<item key='1'>未上船</item>
<item key='3'>退关</item>
</DropList>
</DropLists>
</TreeList>函数
函数格式
参数funcname:字符串,是组件的真正的函数名,请参见具体组件的规范; 参数para:字符串,参数,如果组件需要传入多个参数,那么以回车符(\r\n)分隔,请参见具体组件的规范; 返回值:字符串,具体含义请参见组件的规范;
插件/加载项本身并不执行这个函数,真正执行该函数的是具体的功能组件,插件/加载项只是把函数传递给组件、将组件的返回值再传回给js,函数的js用法举例如下: 假如有个函数的声明是 int print(String, double, boolean) , 用常规语言(如C#、Java)书写, 可能是类似这样的:
1.int ret = print("A", 12.45, true);
1.int ret = print("A", 12.45, true);如果用硕正的规则来书写js,则应该写成:
1.var ret = AF.func("print", "A\r\n12.45\r\ntrue");
1.var ret = AF.func("print", "A\r\n12.45\r\ntrue");为了提高可读性,您可以在 “\r\n” 的左右增加空格,硕正组件在调用时会自动将其剔除的:
1.var ret = AF.func("print", "A \r\n 12.45 \r\n true");
1.var ret = AF.func("print", "A \r\n 12.45 \r\n true");::: warning
第二个参数 (para) 是不能忽略的,如果组件函数文档中某些个函数声明是无参数的,也必须用空串表示, 比如 AF.func(“GetRows”, “”), 不能写成 AF.func(“GetRows”).
:::
常用函数
几个重要的属性
XML描述文档中,有几个元素属性比较重要,在此详细说明。
1.Properties\sort: 默认初始排序,例如 sort="country a, city a";
服务器返回的数据是不必预先排序的,因为Load()后,Treelist会自动按 sort 属性进行再排序!
2.Properties\isTree: Treelist是以列表显示,还是以树显示;
如果以树显示,通常还需要设定 sort 属性,这样 sort 的列就是树杈;如果有多个列参与排序,例如 sort="country a, city a",就会有多层树杈,这就是所谓“多列多层树”;如果不指定 sort,那么默认第一列为树杈.
3.Cols\Col\displayMask: 显示掩码,语法为"表达式; textColor=表达式; backColor=表达式; leftImage=表达式; rightImage=表达式"。这当中相当于有5个分句,分别表示了文字、文字颜色、背景色、左侧图标、右侧图标的独立表达式,相互之间以分号(;)分隔。
表达式中可以包含列名(包括其它列的列名),表示引用本行中其它列的内容,并允许用“data”代表本单元格的数据.
<Properties>中也有同名的DisplayMask属性,但<Properties> 的 displayMask 作用域是整个行,且只有 backColor 和 textColor 二种表达式分句.xml
Treelist 的 XML 描述文件须符合《Treelist XML 文档规范》,该规范并不复杂,文档有6个顶级节点:
1.<Properties> - 总的外观、行为、背景等属性,以及列和列之间的逻辑关系、数据验证逻辑等;
2.<Fonts> - 用到的字体;
3.<Cols> - 每个列的详细描述,这是最关键内容;
4.<Droplists> - 下拉、主外键引用的数据源定义;是否可以即时加载数据字典的下拉?
5.<FreeformBar> - 上方和下方的工具条;
6.<Table> - 夹带的纯数据;
Treelist的格式属性尽管由 XML 描述文件决定,但是通过 SetProp()和 SetColProp()函数,在页面中可以被动态更改;带参数的Build()函数也可以强制更改其属性。硕正报表放在tab里问题
切换时,报表被销毁,关于报表的操作会报错,解决办法如下

遇到的问题
合计需要不同要求进行汇总(比如cny和usd)

选中合计

<expresses>
<express>CNYCheck=CNY*rownum</express>
<express>USDCheck=USD*rownum</express>
</expresses>
//
<Col name="FEE_COD" enable="readonly" width="70"totalExpress="=CNYCheck+'\r\n'+USDCheck">费目</Col>