金甲防线服务项目笔记:list页面展示与交互设计

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: 20,
        pageList: [20, 50, 100],
        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>0){
            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 === "1"){
            $("#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: 20,
            pageList: [20, 50, 100]
        });
    });

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>
时间: 2024-10-03 16:27:30

金甲防线服务项目笔记:list页面展示与交互设计的相关文章

金甲防线服务项目笔记:新增、编辑与删除

一.新增: //添加序列号 function addSerialNumber(obj){ var type = $("input[name='serialNumber']:checked").val(); showWindow($(obj).attr("title"),"genuineSerialNumberManagementAction_addUI.do?genuineSerialNumberManagement.type="+type,&q

金甲防线服务项目笔记:菜单和初始化

1.首先数据库jdbc配置:config路径下,配置jdbc,数据库名:jjfxxin,账户:root,密码:123456 2.菜单初始化设置: //3.5.4服务中心-->应用商城-->正版序列号管理 Resource genuineSerialNumberManagement = new Resource("正版序列号管理", "正版序列号管理", "正版序列号管理", "sys_icon.png", &quo

HTML5项目笔记5:使用HTML5 WebDataBase设计离线数据库

基于HTML5的Web DataBase 可以让你在浏览器中进行数据持久地存储管理和有效查询,假设你的离线应用程序有需要规范化的存储功能,那么使用Web DataBase,可以使你的应用程序无论是在离线或者在线或者网络不通畅情况下都可以将数据保存在客户端. 下面是HTML5 DataBase中两个不同的DataBase的比较,摘自http://www.html5rocks.com/en 上面的一篇文章. 我们这边使用WebSQL来设计和编写底层服务,W3C 的 WebDatabase 规范中说这

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

HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用. 无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道和一些元数据,这些是和你的视频或者音频控件绑定到一块的,这样才形成了一个完整的播放组件. 浏览器支持情况: 浏览器 支持情况 编解码器 Chrome 3.0 Theora . Vorbis .Ogg H.264 . AAC .MPEG4 FireFox 3.5 Theora . Vorbis .Og

Android网络项目课程笔记-----欢迎页面新手引导

1. 欢迎页面 1) 分析 2) 规则 (1) 在2.3没有titlebar,在4.x没有Actionbar     OK (2) 第一次进入程序才显示                               OK (3) 动画效果 (4) 过一段时间(2500)自动跳转到下一个页面     OK (5) 关闭自己                                                   OK (6) 后台操作(下载新图/检查网络/检查root) 课后作业: 实现欢

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

Silverlight项目笔记2:初识Prism以及IoC

项目采用了Prism框架,以下为自己的一些初步认识:   一.Prism Prism是由微软Patterns & Practices团队开发的针对WPF和Silverlight的MVVM框架,好处是将功能模块化,能有效减小程序大小,增强扩展性与可维护性. Prism的几个关键点: (1)启动器类UnityBootstrapper Silverlight程序入口处调用Bootstrapper.Run方法时,Prism会自动做一些初始化工作,包括读取模块信息表,创建模块类实例并初始化(还可以选择按需

小型移动项目笔记

学习慕课网html5+css3笔记 能够独立根据设计稿进行整套项目的需求,剖析及其开发对项目开发流程需要有一个基本的 了解可以灵活 运用切图,重构,前端的知识对项目进行灵活的控制. 需求分析 项目主题 单页面的弹幕欢快的 三个页面 多页视觉放在一个网页文档 采用视觉差特效完成分页展示音乐不跟随翻页,位置固定,播放旋转,可暂停.需求的沟通与确认. 开发技能分析 移动端项目,采用html5作为项目的结构层分析网页呈现形式,直接采用css3完成网页的 表现层特效分析,采用css3完成主要特效,采用Ja

微服务学习笔记(一)

什么是六边形架构 “六边形架构”是 Cockburn大牛在2005年 提出的.该架构提供了一种将业务逻辑和具体输入输出技术分离的模式. 为什么采用微服务 现在大多数开发一个应用,哪怕是类似Uber或者淘宝的应用.基本上都是已单体模式开发.虽然在应用自身架构上采用了模块化设计,但在本质上他还是一个单体应用. 例如:如下图 这样的单体应用不好吗? 上图,是比较经典优秀的单体六边形架构.在很多公司实际上因为各种原因单体应用架构还没有达到这个水平.所以会有以下几个方面问题 1. 整体扩展性差,当应用越来