• 项目经历——EasyUI的检索和更新操作


    什么事都耐不住“磨”?!

    比如一个让人很头疼的问题,对于项目中所用到的EasyUI框架就是一个很明显的感受。项目使用的EasyUI框架,自身封装好的样式使得开发者不用考虑具体的divcss样式了,但是却折腾的接手项目不久的我们。那谁说的,生命不息,折腾不止,今天也来折腾一下EasyUI的简单操作——对EasyUI的增删改查。 

    业务分析 


    1页面加载的时候,从数据库对应的表或视图中检索对应的记录显示在页面上面;
    2、设置时间或者通过不通过条件,可以根据设置的条件显示具体的数据
    3、单击认证,将审阅状态和是否认证都修改成Yes,取消认证则将两者修改成No


    功能实现:

    查询操作:

    Html代码

     

    	    <%--表格显示区--%>
    	    <table id="tt" title="审核日志信息" class="easyui-datagrid" style=" auto; height: 370px" idfield="itemid" pagination="true" iconcls="icon-save"
    	        data-options="rownumbers:true,url:'ExamineVerifyLog.ashx/ProcessRequest',pageSize:5,pageList:[5,10,15,20],method:'get',toolbar:'#tb' ," fitcolumns="true" striped="true">
    	        <%-- 表格标题--%>
    	        <thead>
    	            <tr>
    	                <th data-options="field:'ck',checkbox:true"></th>
    	                <th data-options="field:'RealName',100">用户名</th>
    	                <th data-options="field:'Title',120,align:'right'">日志标题</th>
    	                <th data-options="field:'PublishDate',100">时间</th>
    	                <th data-options="field:'ExamineSign',100">审阅状态</th>
    	                <th data-options="field:'ExamineMessage',100">通知</th>
    	                <th data-options="field:'ExamineSign',60,align:'left'">是否认证</th>
    	            </tr>
    	        </thead>      
    	        <input type="hidden" id="test" name="test" />
    	    </table>
    	   
    	
    	 <%--工具栏-包括按时间查找、按是否通过代码审核查找、查找按钮--%>
    	    <div id="tb" style="padding: 5px; height: auto">
    	        <div>
    	            时间从:
    	            <input id="StartTime" name="StartTime" class="easyui-datebox" style=" 100px" />
    	            到:
    	            <input id="EndTime" name="EndTime" class="easyui-datebox" style=" 100px" /> 
    	           机器审核: 
    	            <select class="easyui-combobox" id="Category" name="Category" panelheight="auto" style=" 100px">
    	                <option value="Yes">通过</option>
    	                <option value="No">未通过</option>
    	            </select>
    			<a href="#" class="easyui-linkbutton" iconcls="icon-search" onclick="reloadgrid()">Search</a>
    			<a href="#" id ="renzheng" class="easyui-linkbutton" iconcls="icon-add" style="margin-left: 360px" onclick="modify('Yes')">认证</a>  
    			<a href="#" id="cancelrenzheng" class="easyui-linkbutton" iconcls="icon-remove" onclick="modify('No')">取消认证</a>
    	        </div>
    	    </div>
    	
            //查询并把数据传递给后台,数组
            function getQueryParams(queryParams) {
                var StartTime = $("#StartTime").datebox("getValue");
                var EndTime = $("#EndTime").datebox("getValue");
                //var KeyWord = document.getElementById("KeyWord").value;
                var Category = $("#Category").combobox("getValue");
                queryParams.StartTime = StartTime;
                queryParams.EndTime = EndTime;
                //queryParams.KeyWord = KeyWord;
                queryParams.Category = Category;
                return queryParams;
            }
    
            //增加查询参数,重新加载表格
            function reloadgrid() {
    
                //查询参数直接添加在queryParams中    
                var queryParams = $('#tt').datagrid('options').queryParams;
                getQueryParams(queryParams);
                $('#tt').datagrid('options').queryParams = queryParams;//传递值
                //alert(queryParams.Category);
                $("#tt").datagrid('reload');//重新加载table
    
            }

    这里都是EasyUI封装好的数据显示区和检索功能区。注意事项:

    1、table中的 url:'ExamineVerifyLog.ashx/ProcessRequest', 是要引用的一般处理程序
    2、pageSize:5,pageList:[5,10,15,20]  是设置每页显示的数量
    3、"field:'要绑定的数据  '用来绑定自己数据库对应的字段,其中的样式居中等可以自行设置。
    4、查询传递参数,应该和工具栏区的控件ID名称 保持一致。

    一般处理程序

     

    //声明B层类        userLogBLL userlog = new userLogBLL();
            public void ProcessRequest(HttpContext context)
            {
                string command = context.Request.QueryString["test"];
    
                if (command == null)
                {
                    Query(context);
                }
    
                if (command == "modify")
                {
                    Modify(context);
                }
                else
                {
                    Query(context);
                }
            }
    
            //查询显示该页面下面的信息
            public void Query(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                //===============================================================
                //获取查询条件:【用户id,开始时间,结束时间,关键字】
                string category, startTime, endTime;
                category = startTime = endTime = "";
                if (null != context.Request.QueryString["Category"])
                {
                    category = context.Request.QueryString["Category"].ToString().Trim();
                }
                if (null != context.Request.QueryString["StartTime"])
                {
                    startTime = context.Request.QueryString["StartTime"].ToString().Trim();
                }
                if (null != context.Request.QueryString["EndTime"])
                {
                    endTime = context.Request.QueryString["EndTime"].ToString().Trim();
                }            
    
                //================================================================
                //获取分页和排序信息:页大小,页码,排序方式,排序字段
                int pageRows, page;
                pageRows = 10;
                page = 1;
                string order, sort, oderby; order = sort = oderby = "";
                if (null != context.Request.QueryString["rows"])
                {
                    pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
    
                }
                if (null != context.Request.QueryString["page"])
                {
    
                    page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
    
                }
                if (null != context.Request.QueryString["sort"])
                {
                    order = context.Request.QueryString["sort"].ToString().Trim();
    
                }
                if (null != context.Request.QueryString["order"])
                {
                    sort = context.Request.QueryString["order"].ToString().Trim();
    
                }
    
                //===================================================================
                //组合查询语句:条件+排序
                StringBuilder strWhere = new StringBuilder();
               
                if (category != "")
                {
                    strWhere.AppendFormat(" ExamineSign= '{0}' and ", category);
                }
                if (startTime != "")
                {
                    strWhere.AppendFormat(" PublishDate >= '{0}' and ", startTime);
                }
                if (endTime != "")
                {
                    strWhere.AppendFormat(" PublishDate <= '{0}' and ", endTime);
                }
    
                //删除多余的and
                int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置
                if (startindex >= 0)
                {
                    strWhere.Remove(startindex, 3);//删除多余的and关键字
                }
                if (sort != "" && order != "")
                {
                    //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序
                    oderby = order + " " + sort;
                }
                //DataSet ds = Bnotice.GetList(strWhere.ToString());  //调用不分页的getlist
    
                //调用分页的GetList方法
                DataSet ds = userlog.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);
                int count = userlog.GetRecordCount(strWhere.ToString());
                string strJson = ToJson.Dataset2Json(ds, count);
                context.Response.Write(strJson);
                context.Response.End();
            }
    


    修改更新认证:

    Html代码:
            //修改管理员
            function modify(flag) {
                $('#fm').form('clear');
                var row = $('#tt').datagrid('getSelected');//获取选中行
    
                //定义更新所需要的参数,也就是数据库对应的字段,从页面表格中获取即可。
                var userid = row.UserID;
                var content = row.Content;
                var examinemessage = row.ExamineMessage;
                var publishdate = row.PublishDate;
                var realname = row.RealName;
                var title = row.Title;
                var userlogid = row.UserLogID;
                var examineSign=flag;           
    
                var xmlHttp = null;
    
                //创建Ajax核心对象.表示当前浏览器不是ie
                if (window.XMLHttpRequest) {
                    xmlHttp = new XMLHttpRequest();
                } else if (window.ActiveXObject) {//IE浏览器
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
    
                var url = "ExamineVerifyLog.ashx?test=modify&UserID=" + userid + "&Content=" + content + "&ExamineSign=" + examineSign + "&ExamineMessage=" + examinemessage + "&PublishDate=" + publishdate + "&RealName=" + realname + "&Title=" + title + "&UserLogID=" + userlogid;
    
                //设置请求方式为GET,url,异步提交
                xmlHttp.open("GET", url, true);
    
                xmlHttp.onreadystatechange = function () {
                    //alert(xmlHttp.readyState);
                    //判断是否执行完毕
                    if (4 == xmlHttp.readyState) {
                        //若执行成功
                        if (200 == xmlHttp.status) {
                            //调用reload
                            $('#tt').datagrid('reload');
                        }
                        else {
                            alert("请求失败!错误代码:" + xmlHttp.status);
                        }
                    }
                };
                //开启异步请求
                xmlHttp.send(null);
            }
    



    一般处理程序代码

     

            /// <summary>
            /// 修改记录
            /// </summary>
            /// <param name="context"></param>
            public void Modify(HttpContext context)
            {
    		//声明实体类
    	    Entity.userLogEntity entityuserlog = new Entity.userLogEntity();
                entityuserlog.UserID = context.Server.UrlDecode(context.Request.QueryString["UserID"]);
                entityuserlog.Content = context.Server.UrlDecode(context.Request.QueryString["Content"]);
                entityuserlog.ExamineMessage = context.Server.UrlDecode(context.Request.QueryString["ExamineMessage"]);
                entityuserlog.PublishDate = context.Server.UrlDecode(context.Request.QueryString["PublishDate"]);
                entityuserlog.Title = context.Server.UrlDecode(context.Request.QueryString["Title"]);
                entityuserlog.UserLogID = context.Server.UrlDecode(context.Request.QueryString["UserLogID"]);
                entityuserlog.ExamineSign = context.Server.UrlDecode(context.Request.QueryString["ExamineSign"]);
               
                try
                {
                    if (userlog.Update(entityuserlog))//判断是否更新成功
                    {
                        context.Response.Write("T");
                    }
                    else
                    {
                        context.Response.Write("F");
                    }
                }
    
                catch (Exception ex)
                {
    
                }
    	}
    

    当然,这里没有写出D层的方法,D层都是动软代码生成的,不是我们自己写的,生成好之后,直接调用东软代码生成的方法~~~

    自己的感觉:

    对于EasyUI,我的感觉就是:各种封装好的框架,要实现相应的功能,调用其封装好的方法即可。但是这句话说起来简单,真正的做到,却是让人那个什么隐隐生疼的赶脚~~~这里还是多亏了成龙师哥的帮助,^_~......

    补充一句闲话:说话是一回事,交流是另一回事!




  • 相关阅读:
    OleDbConnection SqlConnection DB2Connection 区别
    网站软件FTP下载
    总结方法论
    面向对象的三大基石(封装,继承和复合,多态)
    wkhtmltopdf中文参数
    HTTP协议的8种请求类型介绍
    枚举操作笔记
    自写任务调度模型
    数据库操作类
    LoadRunner录制后无法自动生成脚本
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3458973.html
Copyright © 2020-2023  润新知