上次解释了几个易犯错的地方,当然对于大神们那都是小菜一碟了,今天来说说后台请求数据,分页,返回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. Mongodb 故障分享 初始化时"errmsg" : "exception: new file allocation failure" 并且长时间处于STARTUP2

    Hello,大家下午好. 近几天的项目有点赶,所以耽误了更新.现在给大家分享下,在安装mongodb的过程中,遇到的故障一则.其实很小白的问题,当时遇到这个问题的时候比较心慌,浪费了很多时间,跟大家分 ...

  2. ajax的探究与使用

    前端必须掌握ajax,这是几乎所有前端招聘都会要求的一项. 但其实ajax也就是一种异步请求的技术,没有什么很深的东西,不过接触ajax很长一段时间了,早该整理下ajax的学习和使用: PART1: ...

  3. IOS9 Swift

    Swift 2.0发布:即将开源,支持Linux [日期:2015-06-09] 来源:infoq  作者:Linux [字体:大 中 小]     在6月9日凌晨举行的WWDC 2015全球开发者大 ...

  4. PE注入

    // PE注入.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include &l ...

  5. 非maven项目导入idea几点心得总结

    这个问题一共有3种解决办法1. 你下载好的文件应该是src 和Webcontent是在同一个目录下的.只要把Webcontent放入到src下就行.这种就变成maven的目录结构.因为你这个目录结构应 ...

  6. c++内存对齐

    内存对齐原则: 1.数据成员对齐规则:struct, union的数据成员,第一个数据成员放在offset为0的地方,之后的数据成员的存储起始位置都是放在该数据成员大小的整数倍位置.如在32bit的机 ...

  7. 关于lambda表达式的一些学习——基于谓词筛选值序列

    今天看了一些关于lambda表达式的知识,然后对于Func<T,TResult>泛型委托不太熟悉,便查了查相关资料,又引出来了基于谓词筛选值序列这个对我来说的新鲜知识点,于是去查MSDN, ...

  8. flex页面刷新实现

    页面刷新:navigateToURL(new URLRequest("javascript:location.reload();"),"_self"); 关闭浏 ...

  9. tcp的简单介绍

    为什么会有TCP/IP协议 在 世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人 的口音,让他们无法合作 ...

  10. XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)[转]

    目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年啊!!! 作为刚开始学习iOS编程的菜鸟, ...