1、前台页面:

因为要展示正版和非正版,所以传个Type值过去:

  //正版序列号库列表
var type = $("input[name='serialNumber']:checked").val();
$("#inside_tableElement").datagrid({
striped : true,
collapsible : true,
url : "${basePath}/genuineSerialNumberManagementAction_list.do",
queryParams:{
"genuineSerialNumberManagement.type":type
},
columns : [ [
{field : 'softDisplayName',title : '软件名',align : 'center',width : (datag_width * 0.44)},
{field : 'version',title : '版本号',align : 'center',width : (datag_width * 0.44)},
{field : 'serialNumber',title : '序列号',align : 'center',width : (datag_width * 0.44)}
] ],
fitColumns : true,
rownumbers : true,
pagination:true,
pageSize: ,
pageList: [, , ],
onSelectAll : function() {
},
onUnselectAll : function() {
},
onSelect : function() {
},
onUnselect : function(rowIndex, rowData) {
}
});

后台list方法:

public void list(){
GridData<GenuineSerialNumberManagement> genuineSerialNumberManagements = null;
try {
HQLBuilderUtil builderUtil = new HQLBuilderUtil(GenuineSerialNumberManagement.class);
builderUtil.addOrderByProperty(" this.id ", true);
if(genuineSerialNumberManagement.getType() != null){
int type = genuineSerialNumberManagement.getType();
builderUtil.addWhereClause(" this.type=? ", type);//增加查询属性type
}
//当有SoftDisplayName传过来时,还要增加查询属性SoftDisplayName
if(genuineSerialNumberManagement.getSoftDisplayName() != null && !"".equals(genuineSerialNumberManagement.getSoftDisplayName())){
String softDisplayName = genuineSerialNumberManagement.getSoftDisplayName();
builderUtil.addWhereClause(" this.softDisplayName=? ", softDisplayName);
}
System.out.println(builderUtil.toQueryListHql());
genuineSerialNumberManagements = genuineSerialNumberManagementService.getPageView(builderUtil, getPageNum(), getPageSize());
} catch (Exception e) {
log.error("正版序列号管理列表获取失败!", e);
}finally{
print(ActionUtil.jsonObj(genuineSerialNumberManagements));
}
}

我们可以看下HQLBuilderUtil 工具类里面的addWhereClause:注意需要加 =? 来与参数对应

   /**
* 添加过滤条件,组织WHERE语句(可变参数附条件)
* @param condition 过滤的条件
* @param params 参数列表
* @return 工具类本身
*/
public HQLBuilderUtil addWhereClause(String condition, Object... params){
//1.组织语句
if(StringUtils.isBlank(whereClause)){
whereClause = " WHERE " + condition;
}else{
whereClause += " AND " + condition;
}
//2.添加参数
if(params != null && params.length>){
for (Object param : params) {
paramList.add(param);
}
}
return this;
}

2、接着,我们看点击左右软件名字,与右侧展示数据的交互

  //左边菜单栏切换
function changeMenu(obj){
$(obj).siblings().removeClass("selected");
$(obj).addClass("selected");
var softDisplayName = $(obj).text(),
type = $('input[name="serialNumber"]:checked').val();
if(type === ""){
$("#inside_tableElement").datagrid('load',{
"genuineSerialNumberManagement.type":type,
"genuineSerialNumberManagement.softDisplayName":softDisplayName
})
}else{
$("#inside_tableElement_no").datagrid('load',{
"genuineSerialNumberManagement.type":type,
"genuineSerialNumberManagement.softDisplayName":softDisplayName
})
}
}

也就是上面的list方法,传入了softDisplayName的查询属性。

3、接着,正版和非正版之间切换:注意$("#inside_tableElement_no")需要这样初始化表格之后,才能再像正版那样使用  load  传入参数重新加载

  //正版与非正版之间切换
$("#genuineSerialNumber").click(function(){
$("#tableName").text("正版序列号库:");
$("#center1").css('display','block');
$("#center2").css('display','none');
var type = $("#genuineSerialNumber").val();
var softDisplayName = $("#softNameMenu .selected").text();
$("#inside_tableElement").datagrid("load",{
"genuineSerialNumberManagement.type":type,
"genuineSerialNumberManagement.softDisplayName":softDisplayName
});
});
$("#non_genuineSerialNumber").click(function(){
$("#tableName").text("非正版序列号库:");
$("#center1").css('display','none');
$("#center2").css('display','block');
var type = $("#non_genuineSerialNumber").val();
var softDisplayName = $("#softNameMenu .selected").text();
$("#inside_tableElement_no").datagrid({
striped : true,
collapsible : true,
url : "${basePath}/genuineSerialNumberManagementAction_list.do",
queryParams:{
"genuineSerialNumberManagement.type":type,
"genuineSerialNumberManagement.softDisplayName":softDisplayName
},
columns : [ [
{field : 'softDisplayName',title : '软件名',align : 'center',width : (datag_width * 0.44)},
{field : 'version',title : '版本号',align : 'center',width : (datag_width * 0.44)},
{field : 'serialNumber',title : '序列号',align : 'center',width : (datag_width * 0.44)}
] ],
fitColumns : true,
rownumbers : true,
pagination:true,
pageSize: ,
pageList: [, , ]
});
});

4、struts的s:iterator标签循环遍历:

左侧的软件名称是通过struts遍历数据的值来展示,通过下面方式。

后台需要设置list到前台来:

public String listUI(){
List<GenuineSerialNumberManagement> genuineSerialNumberManagements = genuineSerialNumberManagementService.queryAll();
List<GenuineSerialNumberManagement> genuineSerialNumberManagementList = new ArrayList<GenuineSerialNumberManagement>();
if(genuineSerialNumberManagements != null){
for(GenuineSerialNumberManagement gsnm : genuineSerialNumberManagements){
GenuineSerialNumberManagement gm = new GenuineSerialNumberManagement();
gm.setSoftDisplayName(gsnm.getSoftDisplayName());
genuineSerialNumberManagementList.add(gm);
}
}
getRequest().setAttribute("genuineSerialNumberManagementList", genuineSerialNumberManagementList);
return RETURN_LISTUI;
}

前台通过下面方式获取遍历:

<div id="softNameMenuContent">
<s:if test="#request.genuineSerialNumberManagementList != null">
<s:iterator value="#request.genuineSerialNumberManagementList">
<a class="softName" onclick="changeMenu(this);"><span><s:property value="#request.softDisplayName" /></span></a>
</s:iterator>
</s:if>
</div>

项目笔记:list页面展示与交互设计的更多相关文章

  1. HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器

    HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用. 无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道 ...

  2. HTML5项目笔记10:使用HTML5 IndexDB设计离线数据库

    之前的文章(http://www.cnblogs.com/wzh2010/archive/2012/05/22/2514017.html)里面描述了HTML5 离线数据存储的Web SQL,一个基于S ...

  3. 项目Splash页面的开发与设计

    项目Splash页面的开发与设计 首先建立一个安卓的项目,然后修改manifest.xml文件,修改应用程序的logo和显示名称,效果图如下: 对应的代码如下: 1 <?xml version= ...

  4. Prometheus笔记(二)监控go项目实时给grafana展示

    欢迎加入go语言学习交流群 636728449 Prometheus笔记(二)监控go项目实时给grafana展示 Prometheus笔记(一)metric type 文章目录 一.promethe ...

  5. case设计及验证:入口+页面+展示

    测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...

  6. 《About Face 3:交互设计精髓》读书笔记(一)

    第一章 目标导向设计 当今数字产品的创造过程 市场营销人员对于产品设计过程的贡献,通常局限于需求列表这些需求同用户的实际需要与期望无关,主要在于追赶竞争对手,按照任务清单管理IT资源,以及基于市场调查 ...

  7. 【软件需求工程与建模 - 小组项目】第6周 - 成果展示3 - 软件设计规格说明书V4.1

    成果展示3 - 软件设计规格说明书V4.1

  8. 项目那几步走:先配置setting路径文件、创建数据库、执行数据库迁移命令、配置mysql数据库信息、注册app、注释中间件、pymysql替换mysqldb-配置urls路由-继续视图函数-然后HTML页面展示-HTML里面导入css文件、models配置数据库表、

    django使用mysql数据库: 首先cmd创建库 1.settings: """Django settings for day42 project. Generate ...

  9. SNF快速开发平台3.0之BS页面展示和九大优点-部分页面显示效果-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

    一)经过多年的实践不断优化.精心维护.运行稳定.功能完善: 能经得起不同实施策略下客户的折腾,能满足各种情况下客户的复杂需求. 二)编码实现简单易懂.符合设计模式等理念: 上手快,见效快.方便维护,能 ...

随机推荐

  1. win2008 r2 服务器php+mysql+sqlserver2008运行环境配置(从安装、优化、安全等)

    这篇文章主要介绍了win2008 r2 服务器php+mysql+sqlserver2008运行环境配置(从安装.优化.安全等),需要的朋友可以参考下 win2008 r2 安装 http://www ...

  2. 不通过注册表使用ActiveX对象

    为了弄清楚COM库的运行原理,特意做了这个实验: #include "stdafx.h" #include "objbase.h" #include " ...

  3. 洛谷P3201 [HNOI2009]梦幻布丁 [链表,启发式合并]

    题目传送门 梦幻布丁 题目描述 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入输 ...

  4. Calendar日期方法

    面试居然让我获取当前月份第一天跟最后一天,主要是尴尬的回答不上来. 废话不说,直接贴代码,工作应该是够用了 public class TestCalendar { // 日期也就是这了 public ...

  5. 【LeetCode】shell

    195. Tenth Line 输出file.txt中的第十行 答案: # Read from the file file.txt and output the tenth line to stdou ...

  6. cocos2d-android 使用 cocos2d 绘图

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha cocos2d-android-1 https://github.com/ZhouWei ...

  7. [BOI2004]Sequence

    题面描述 给定整数数组$a_1,a_2,a_3...a_n$,求递增数组$b_1,b_2,b_3...b_n$ 使得$|a_1 - b_1| + |a_2 - b_2| + ... + |a_n - ...

  8. POJ3710 Christmas Game 博弈论 sg函数 树的删边游戏

    http://poj.org/problem?id=3710 叶子节点的 SG 值为0:中间节点的SG值为它的所有子节点的SG值加1后的异或和. 偶环可以视作一个点,奇环视为一条边(连了两个点). 这 ...

  9. JZYZOJ1237 教授的测试 dfs

    http://172.20.6.3/Problem_Show.asp?id=1237   锻炼搜索的代码能力,不错的题. 开始对dfs到底向下传递什么搞不清楚,需要想一下,noip难度的题还有这种情况 ...

  10. Java并发(十):读写锁ReentrantReadWriteLock

    先做总结: 1.为什么用读写锁 ReentrantReadWriteLock? 重入锁ReentrantLock是排他锁,在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服 ...