上次解释了几个易犯错的地方,当然对于大神们那都是小菜一碟了,今天来说说后台请求数据,分页,返回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. asp.netajax开发应用心得-accordation控件的事件处理

    今天,再次运行以前的项目时,发现按钮的单击事件不起作用了,加了断点之后发现根本没有触发该事件.... 按照网上找到的答案,有的说把控件删掉重新拖拽一个进去,虽然以前也遇到过控件失效,重新拖拽有效的时候 ...

  2. Highcharts 在低版本 IE 上使用注意事项及个人总结

    很多人经常遇到图表在主流浏览器上运行正常,在低版本IE(包括IE6.IE7.IE8等)下运行出错(图表显示不出来或显示不正常)的情况,这不是兼容性问题,而是 IE 浏览器自身的一些限制,我们只需要注意 ...

  3. C# 怎么才能取到网卡的型号信息呢? 如: 博通 NetLink BCM57781 Gigabit Ethernet

    C# 怎么才能取到网卡的型号信息呢?  如: 博通 NetLink BCM57781 Gigabit Ethernet

  4. js只保留整数,向上取整,四舍五入,向下取整等函数

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3.四舍五入. Math.round(5/2) 4.向下取整 Math.f ...

  5. Git-rebase 小笔记

    转自: https://blog.yorkxin.org/posts/2011/07/29/git-rebase/ 最近刚好有个机会整理很乱的Git commit tree,终于搞懂了rebase 的 ...

  6. 正则匹配中文 UTF-8 & GBK

    在php 中: //GB2312汉字字母数字下划线正则表达式 GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff).&qu ...

  7. JS详解

    事件源对象:event.srcElement.tagName  event.srcElement.type 捕获/释放:event.srcElement.setCapture();  event.sr ...

  8. CSS字体属性大全

    文章转自:http://www.10wy.net/Article/CSS/CSS_list_8.html查看更多更专业性的文章请到:网页设计网 CSS字体属性 字体名称属性(font-family) ...

  9. 2013年最棒的4个PHP框架

    PHP 框架可以帮你编写简洁可重用的代码,遵循 MVC 模式,确保应用逻辑和展现分离.有很多很多的框架各有千秋,有的性能好,有的文档全,还有的提供大量的内建功能等等. 这里我们罗列的 2013 年最好 ...

  10. eap-md5

    eap-md5       文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/et ...