上次解释了几个易犯错的地方,当然对于大神们那都是小菜一碟了,今天来说说后台请求数据,分页,返回json数据

废话不多说献上代码

    private string QueryList(ArrayList arrayList)
{
//ArrayList ret = new ArrayList();
string order = this.Request.Form["order"];
string sort = this.Request.Form["sort"];
string rows = this.Request.Form["rows"];
string page = this.Request.Form["page"];
//page=1&rows=10&sort=UserName&order=desc
int iSortIndex, iPage, iRows;
string[] colums = new string[] { "moveid", "daytime", "outsite", "insite", "inputman", "handleman", "outdate", "outid", "availability", "invaliddate", "status", "preconcert", "checked", "chkdate", "fin_checked", "remark", "used", "deleted"};
//if (!int.TryParse(sidx, out iSortIndex))
//{
// iSortIndex = -1;
//}
iSortIndex = ;
if (!int.TryParse(page, out iPage))
{
iPage = ;
}
if (!int.TryParse(rows, out iRows) || iRows > || iRows <= )
{
iRows = ;
}
int total = ;
//传入表名
JGDataQuery gq = new JGDataQuery("move");
//传入搜索条件
if (!string.IsNullOrEmpty(Request.Form["IdOrName"]))
{
if (Erp.Common.Verify.IsNumber(Request.Form["IdOrName"]))
{
gq.AddQueryParam("moveid", Request.Form["IdOrName"]);
}
}
      
DataTable dt = gq.GetListByPage(colums, iPage, iRows, , sort,out total);
     //返回json
return Erp.Common.ToEasyJson.TableToJson(dt,total); }

上面查询数据是封装了一个类,包括查询条件和数据分页sql,当然用存储过程是最好,最快的啦,但是系统关联表太多,为了不麻烦的频繁改,就拼sql啦,为了扩展方便嘛,偷偷懒

public class JGDataQuery
{ public string TableName { get; private set; }
string sqlWhere;
List<SqlParameter> sqlParaList = new List<SqlParameter>();
public JGDataQuery(string tableName)
{
//
//TODO: 在此处添加构造函数逻辑
//
if (string.IsNullOrEmpty(tableName))
{
throw new NullReferenceException("表名不能为空;");
}
TableName = tableName;
} public void AddQueryParam(string name, object paramValue)
{
sqlWhere += " and " + name + "=@" + name;
sqlParaList.Add(new SqlParameter(name, paramValue));
}
/// <summary>
/// 同一列值多值
/// </summary>
/// <param name="columnName"></param>
/// <param name="key"></param>
/// <param name="keyValue"></param>
public void AddInParams(string columnName, List<string> listParams)
{
sqlWhere += " and " + columnName + " in (";
foreach (string item in listParams)
{
sqlWhere += item + ',';
} if (sqlWhere.Length > )
{
sqlWhere = sqlWhere.Remove(sqlWhere.LastIndexOf(','), );
}
sqlWhere += " ) ";
}
public void AddLikeQueryParam(string name, object paramValue)
{
sqlWhere += " and " + name + " like '%@" + name + "%' ";
sqlParaList.Add(new SqlParameter(name, paramValue));
}
public void AddLetterThanParm(string name, object paramValue)
{
sqlWhere += " and " + name + "<@" + name;
sqlParaList.Add(new SqlParameter(name, paramValue));
}
public void AddGreaterThanParm(string name, object paramValue)
{
sqlWhere += " and " + name + ">@" + name;
sqlParaList.Add(new SqlParameter(name, paramValue));
}
public void AddNoEqualParam(string name, object paramValue)
{
sqlWhere += name + "<>@" + name + " and ";
sqlParaList.Add(new SqlParameter(name, paramValue));
}
public void AddBetweenQueryParam(string starttime, string endtime, object paramValue1, object paramValue2)
{
sqlWhere += " and " + starttime + " < @" + starttime;
sqlWhere += " and " + endtime + "< @" + endtime;
sqlParaList.Add(new SqlParameter(starttime, paramValue1));
sqlParaList.Add(new SqlParameter(endtime, paramValue2));
}
/// <summary>
/// Or条件查询
/// </summary>
string sqlOrWhere = string.Empty;
public void AddlikeOrParam(string name, object paramValue)
{
//sqlOrWhere += name + " like @" + name + " or ";
//sqlParaList.Add(new SqlParameter(name, " '%" + paramValue + "%' ")); sqlOrWhere += name + " like '%" + paramValue + "%' or ";
sqlParaList.Add(new SqlParameter(name, " '%" + paramValue + "%' "));
}
/// <summary>
/// 分页获取数据列表
/// </summary>
/// <param name="columns">需要查询的列明数组</param>
/// <param name="page">当前页</param>
/// <param name="pageSize">页码</param>
/// <param name="sortIndex">排序索引</param>
/// <param name="sortDirction">排序升降</param>
/// <returns></returns>
public DataTable GetListByPage(string[] columns, int page, int pageSize, int sortIndex, string sortDirction, out int total)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT ");
if (columns == null || columns.Length == )
strSql.Append(" * ");
else
{
for (int i = ; i < columns.Length; i++)
{
strSql.Append(columns[i] + ",");
}
strSql.Remove(strSql.Length - , );
}
strSql.Append(" FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER ("); if (sortIndex >= && sortIndex < columns.Length - )
{
strSql.Append(" order by T." + columns[sortIndex]);
if (sortDirction != null && (sortDirction == "asc" || sortDirction == "desc"))
{
strSql.Append(" " + sortDirction);
}
} strSql.Append(")AS Row, T.* from " + TableName + " T ");
if (sqlParaList != null && sqlParaList.Count > )
{
strSql.Append(" where 1=1");
if (!string.IsNullOrEmpty(sqlWhere))
{
strSql.Append(sqlWhere.TrimEnd(','));
}
if (!string.IsNullOrEmpty(sqlOrWhere))
{
strSql.Append(" and ( " + sqlOrWhere.Substring(, sqlOrWhere.Length - ) + " )");
}
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", (pageSize * (page - ) + ), pageSize * page);
//获取列表总行数
total = GetListCount(pageSize);
return SqlHelper.ExecuteDataTable(SqlHelper.SHOP_CONN_STR, CommandType.Text, strSql.ToString(), sqlParaList.ToArray());
}
/// <summary>
/// 获取列表总行数
/// </summary>
/// <returns></returns>
public int GetListCount(int pageSize)
{ StringBuilder strSql = new StringBuilder("select count(1)" + " from " + TableName);
if (sqlParaList != null && sqlParaList.Count > )
{
strSql.Append(" where 1=1");
if (!string.IsNullOrEmpty(sqlWhere))
{
strSql.Append(sqlWhere.TrimEnd(','));
}
if (!string.IsNullOrEmpty(sqlOrWhere))
{
strSql.Append(" and (" + sqlOrWhere.Substring(, sqlOrWhere.Length - ) + ")");
}
}
object obj = SqlHelper.ExecuteScalar(SqlHelper.SHOP_CONN_STR, CommandType.Text, strSql.ToString(), sqlParaList.ToArray());
int RowsCount = ;
if (obj != null)
{
return RowsCount = (int)obj;
}
else
{
return ;
}
//int total = 0;
// //if (RowsCount % pageSize == 0)
// //{
// // total = RowsCount / pageSize;
// //}
// //else
// //{
// // total = RowsCount / pageSize + 1;
// //}
// return total;
}

拼接json的方法

      public static string TableToJson(DataTable table,int total)
{
if (table == null)
return "";
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("\"total\":" + total + ",");
sb.Append("\"rows\":[");
foreach (DataRow row in table.Rows)
{
sb.Append("{");
foreach (DataColumn col in table.Columns)
{
sb.Append("\"" + col.ColumnName + "\":\"" + row[col.ColumnName] + "\",");
}
sb.Remove(sb.Length - , );
sb.Append("},");
}
sb.Remove(sb.Length - , );
sb.Append("]");
sb.Append("}");
return sb.ToString();
}

jquery.easyui使用详解,和遇到的问题,提供大家在使用的时候少走弯路(二)的更多相关文章

  1. jquery.easyui代码详解,和遇到的问题,提供大家在使用的时候少走弯路(一)

    初次使用jquery.easyui这个东东,虽然简单,但还是很费力的去研究了一下使用,在使用过程中遇到的问题,下面代码会详细的注释到 引用的文件jquery.min.js              j ...

  2. jquery的css详解(二)

    jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ st ...

  3. jQuery.attr() 函数详解

    一,jQuery.attr()  函数详解: http://www.365mini.com/page/jquery-attr.htm 二,jQuery函数attr()和prop()的区别: http: ...

  4. jQuery 事件用法详解

    jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...

  5. jQuery.ready() 函数详解

    jQuery.ready() 函数详解 ready()函数用于在当前文档结构载入完毕后立即执行指定的函数. 该函数的作用相当于window.onload事件. 你可以多次调用该函数,从而绑定多个函数, ...

  6. jquery inArray()函数详解

    jquery inarray()函数详解 jquery.inarray(value,array)确定第一个参数在数组中的位置(如果没有找到则返回 -1 ). determine the index o ...

  7. jQuery extend方法详解

    先说个概念的东西: jQuery为开发插件提拱了两个方法,分别是: $.fn.extend(item):为每一个实例添加一个实例方法item.($("#btn1") 会生成一个 j ...

  8. jQuery的观察者模式详解 转载

    jQuery的观察者模式详解 投稿:hebedich 本文主要是介绍了jQuery中on方法及trigger方法,以及围绕这个方法来体验的观察者模式,是篇非常不错的文章,对我们理解观察者模式很有帮助. ...

  9. 【转载】jQuery.extend 函数详解

    转载自:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html jQuery.extend 函数详解 JQuery的e ...

随机推荐

  1. Vue2.X的状态管理vuex记录

    记住上述的顺序情况:想要改变state,只能通过Mutation,虽然action可以直接改变state,这样会使每个状态可以方便的跟踪和记录(用Devtools跟踪) vue Method   -- ...

  2. java向Excel文件写入数据

    /*使用之前要记得导入第三的jar包这个是我之前使用的时候那别人的东西自己修改了一下 还没来得及好好地封装一下还望见谅,注释我感觉写的挺清楚的就在不进行解释代码了*/package com.zzp.E ...

  3. C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询

    前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并 ...

  4. 学习solr

    1.下载地址 http://apache.opencas.org/lucene/solr/

  5. Work around by " Due to heavy load, the latest workflow operation has been queued. " 分类: Sharepoint 2015-07-08 00:19 3人阅读 评论(0) 收藏

    I hope most of the users and developers might have come across above note and worried about it. Ther ...

  6. Makefile 一点一滴(二)—— 输出文件到指定路径

    先来看最简单的 makefile 文件: TestCpp : TestCpp.o g++ -o TestCpp TestCpp.o TestCpp.o : TestCpp.cpp g++ -c Tes ...

  7. Levenberg-Marquardt算法基础知识

    Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼   什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使 ...

  8. JDK动态代理与CGLib动态代理

    1.JDK动态代理 JDK1.3以后java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,动态代理是实现AOP的绝好底层技术. JDK的动态代理主要涉及到java.lang.reflect ...

  9. Android Context上下文解析

    1.Context概念 Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源.启动一个新的Activity.获取系统 ...

  10. 了解JavaScript

    JavaScript是什么? JavaScript是一种可以用来给网页增加交互性的编程语言. JavaScript是一种面向对象的语言. JavaScript和Java之间没有太大的关系. JavaS ...