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

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

业务分析


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

功能实现:

查询操作:

Html代码
	    <%--表格显示区--%>
<table id="tt" title="审核日志信息" class="easyui-datagrid" style="width: 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',width:100">用户名</th>
<th data-options="field:'Title',width:120,align:'right'">日志标题</th>
<th data-options="field:'PublishDate',width:100">时间</th>
<th data-options="field:'ExamineSign',width:100">审阅状态</th>
<th data-options="field:'ExamineMessage',width:100">通知</th>
<th data-options="field:'ExamineSign',width: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="width: 100px" />
到:
<input id="EndTime" name="EndTime" class="easyui-datebox" style="width: 100px" /> 
机器审核:
<select class="easyui-combobox" id="Category" name="Category" panelheight="auto" style="width: 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,我的感觉就是:各种封装好的框架,要实现相应的功能,调用其封装好的方法即可。但是这句话说起来简单,真正的做到,却是让人那个什么隐隐生疼的赶脚~~~这里还是多亏了成龙师哥的帮助,^_~......

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

项目经历——EasyUI的检索和更新操作的更多相关文章

  1. 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理

    由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...

  2. 对Java配置文件Properties的读取、写入与更新操作

    http://breezylee.iteye.com/blog/1340868 对Java配置文件Properties的读取.写入与更新操作 博客分类: javase properties  对Jav ...

  3. 【SSH网上商城项目实战09】添加和更新商品类别功能的实现

    转自:https://blog.csdn.net/eson_15/article/details/51347734 上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1.  ...

  4. Linux上命令行检出、提交和更新操作

    1.创建工作区目录 列:我创建两个工作目录,用来模拟两个开发人员,命令如下:(工作路径可以按照自己需要随意改变) mkdir -p /root/workspace/harry mkdir -p /ro ...

  5. es之对文档进行更新操作

    5.7.1:更新整个文档 ES中并不存在所谓的更新操作,而是用新文档替换旧文档: 在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档并建立索引.旧版本文档不会立即消失 ,但 ...

  6. MongoDB 文档的更新操作

    在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...

  7. java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0

    日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...

  8. 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了

    原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...

  9. Java配置文件Properties的读取、写入与更新操作

    /** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...

随机推荐

  1. 用response输出一个验证码

    package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servle ...

  2. 计算机天才Aaron Swartz 名作 《如何提高效率》——纪念真正的“hacker"!

    如何提高效率 <HOWTO: Be more productive>(如何提高效率)作者:Aaron Swartz 肯定有人跟你说过这样的话,“你有看电视的那么长时间,都可以用来写一本书了 ...

  3. 在winform中调用js文件并输出结果

    在winform中调用js文件并输出结果默认分类 2007-10-19 16:35:06 阅读25 评论0 字号:大中小 由于项目需要在winform中调一个强大的js,所以把这个tip记录在此: 1 ...

  4. magento站点还原到本地

    问题描述 首先将网站文件夹解压到xampp/htdocs/wenjianjia目录下,然后替换sql文件里的域名为localhost/wenjianjia.然后访问前台,正常.访问后台,出问题了 Ma ...

  5. 前端html+css之第十四天

    一.HTML 1.HTML是什么? Hypertext Markup Language, 中文也就是超文本链接标示语言. HTML是一套规则,一套浏览器认识的规则. 2.开发者: (1)学习Html规 ...

  6. 简述一个javascript简单继承工具的实现原理

    背景 由于本人非常希望能够开发自己的游戏,所以业余时间一直在想着能不能自己一些好玩又有趣的东西出来,最近随着steam上众多独立游戏的爆发,感觉自己又燃烧了起来,所以又拾起了很久以前的一个2d引擎,决 ...

  7. Linux——搭建PHP开发环境第三步:mysql

    原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了m ...

  8. while死循环问题-输入字符就会死循环

    问题: 是否会遇到这样的问题,在while循环中 sanf("%d",&a);如果输入的不是数字,是字符就会进入死循环. 解决方案:都是缓冲区惹的祸,输入字符后,字符会一直 ...

  9. Communication System

    poj1018:http://poj.org/problem?id=1018 题意:某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1.m2.m3.....mn个厂家提供生产, ...

  10. Play on Words

    poj1386:http://poj.org/problem?id=1386 题意:给你n个单词,问你是否能够通过调整单词的顺序存在这样的一个序列,使得 每个单词的首字母是前一个单词的尾字母. 题解: ...