docker版jxTMS使用指南:数据查询

本文讲解docker版jxTMS的数据查询,整个系列的文章请查看:docker版jxTMS使用指南

请按前文所述先做好相关的准备工作,然后多在helloWorld界面输入各种数据后点【点我】按钮,以多创建点数据来为查询做下准备。

分页查询

首先在web文件中增加一个查询界面:

//分页查询的演示界面
web listDemoData type div;
web listDemoDataT2 bind tableTotalCount parent listDemoData type table title="分页查询演示数据列表",
    width=900,pagination=true,query=search;
with listDemoDataT2 col joID head joID hide=true;
with listDemoDataT2 col demoTime head 日期 width=100;
with listDemoDataT2 col demoType head 类型 width=100;
with listDemoDataT2 col demoName head 名称 width=200;

保存web文件

然后清空sql文件,然后在其中输入:

sql sqlListDemoData
    from demoData as ta
    select ta.ID as joID,ta.CreateTime as demoTime,ta.Type as demoType,ta.Name as demoName
    orderBy ta.CreateTime DESC;

保存sql文件

注:现在提供的sql文件中含有还未讲到的内容,所以sql文件必须清空后再输入sqlListDemoData,否则上传后会出错

然后在op.py文件中增加:

@biz.Demand('disp','listDemoData')
@biz.OPDescr
def op1(json):
	#在快捷栏中添加一个新的快捷入口【演示->列表演示数据】
    json.setShortcut('演示'.decode('utf-8'),'列表演示数据'.decode('utf-8'))
    #指示listDemoData是一个数据表的查询功能,请求系统自动介入
    json.setParam('dispType','list')
    #指示从数据库中查询出来的结果是一个json数组
    json.setParam('resultType','json')
    #将上述的json数组发送到web中的哪个数据表
    json.setParam('listTable','listDemoDataT2')
    #为本次查询指定数据源,demo.sqlListDemoData定义在sql文件中
    json.setParam('dataSource','demo.sqlListDemoData')

保存op.py文件

然后上传web、sql、op.py这三个文件,并热机刷新并退出后重新登录。

注:由于我们在op.py文件中添加了新的快捷栏入口,所以必须重新登录才能看到刚添加的快捷栏中的入口

然后点击快捷栏【演示->列表演示数据】,就会看到一个带分页的数据列表:

分页数据表

我只输入了两次,而分页表每页默认是15行,所以大家看到的就只有一页。

条件查询

上面演示的数据查询用处非常有限,我们大多用到的都是带条件的查询,所以我们继续演示简单的条件演示。

首先在web文件中修改listDemoData界面

//分页查询的演示界面
web listDemoData type div;

//增加的是listDemoDataT1
web listDemoDataT1 parent listDemoData type table title="查询条件",width=900,alone=true;
with listDemoDataT1 row 0 col c0 web n type text text='类型:',width=150;
with listDemoDataT1 row 0 col c1 web n bind joType type combobox width=150,useText=true,
	values=[{'text':'类型甲'},{'text':'类型乙'}];
with listDemoDataT1 row 0 col c2 web n type text text='名称:',width=150;
with listDemoDataT1 row 0 col c3 web n bind joName type input width=150,
    placeholder="请输入名称...";

with listDemoDataT1 row 1 col c0 web n type button width=80,motion=cmd,demand=reSearch,text='搜索',onlyOnce=false;

//上面是增加的部分
web listDemoDataT2 bind tableTotalCount parent listDemoData type table title="分页查询演示数据列表",
    width=900,pagination=true,query=search;
with listDemoDataT2 col joID head joID hide=true;
with listDemoDataT2 col demoTime head 日期 width=100;
with listDemoDataT2 col demoType head 类型 width=100;
with listDemoDataT2 col demoName head 名称 width=200;

保存web文件

然后在capa.py文件中增加:

def setSearchCondition(self, db, ctx):
    if self.dataSource == 'demo.sqlListDemoData':
        cn = self.getInputString('joType')
        if utils.valid(cn):
            self.sql.addContion('demoData', 'Type', jxCompare.Equal,cn)
        cn = self.getInputString('joName')
        if utils.valid(cn):
            #Name是全文索引,要用Match算子
            self.sql.addContion('demoData', 'Name', jxCompare.Match,cn)

注:注意对齐

然后保存并上传capa.py、web,并热机刷新

然后点击快捷栏【演示->列表演示数据】,并输入条件就会看到条件查询的效果:

条件查询

大家试一下,在名称栏中只输入一个字【我】会是什么情况?

很奇怪是吧?输入【我的】能查出来,而只输出【我】反而查不出来。这是因为mysql的全文搜索要求关键字必须是两个字符以上。

此外,大家有没有发现一个问题,按钮【搜索】为什么会这么长?其是定义在c0列的,为什么不与上一行中的c0列的【类型:】对齐呢?!

大家看一下listDemoDataT1表的定义,会发现其多了一个属性:alone=true。这将指示listDemoDataT1表的每一行都是各自设置列宽的,而不会各行同列对齐。也就是说,listDemoDataT1表的1行就只有一列:c1列,所以它就占了整个的表宽。

详细的讲解,请大家参考下面参考资料中的相关文章。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值