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

比如一个让人很头疼的问题,对于项目中所用到的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. cas的url中去掉jsessionid

    Servlet3.0规范中的<tracking-mode>允许你定义JSESSIONID是存储在cookie中还是URL参数中.如果会话ID存储在URL中,那么它可能会被无意的存储 在多个 ...

  2. ZOJ2112 Dynamic Rankings 动态区间第K最值 平方分割

    有了上一题的经验(POJ的静态区间第K最值)再解决这道题就轻松多了 空间5256KB,时间3330ms,如果把动态开点的平衡树换成数组模拟的话应该会更快 之所以选择了平方分割而不是树套树,不仅是所谓趁 ...

  3. 【POJ1151】【扫描线+线段树】Atlantis

    Description There are several ancient Greek texts that contain descriptions of the fabled island Atl ...

  4. jQuery实现公告文字左右滚动的代码。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. coffee 编译时, 用本地环境

    export PATH="./node_modules/.bin:$PATH" 原文: How to use package installed locally in node_m ...

  6. 面试后 follow up letter 分享

    分享一下最近面试外企的follow up letter. Dear Mr. Xu,     Thank you again for the time you and Mr. Guo spent wit ...

  7. 用Web Picasa API搭建站内相册

    在flickr时代,为了专门把站内嵌入相册,还专门写了一篇文章把Flickr相册搬回家.flickr被墙之后,我就把个人相册转到了Web Picasa上.用Picasa Web就简单多了,官方提供了S ...

  8. Android 视图切换库的使用 - SwitichLayout

    要点: 1. SwitichLayout 原理和基本特效展示 - 设计上和基本特效 2. SwitchLayout 的用法 - SwitchLayout 的基本配置和用法 3. SwithLayout ...

  9. Fiddle的应用

    在Composer中输入测试的网址: 可能会发生一下情况,这意味着需要在左侧面板中选择一项,来看回应:   选择一个请求后,选择TextView,看原生的回应(Response)内容

  10. OC 之 谓词

    NSPredicate 分类: Objective-C iOS XCode Mac2012-10-26 17:26 10557人阅读 评论(1) 收藏 举报 简述:Cocoa框架中的NSPredica ...