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

上次解释了几个易犯错的地方,当然对于大神们那都是小菜一碟了,今天来说说后台请求数据,分页,返回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 = 1;
        if (!int.TryParse(page, out iPage))
        {
            iPage = 1;
        }
        if (!int.TryParse(rows, out iRows) || iRows > 100 || iRows <= 0)
        {
            iRows = 20;
        }
        int total = 0;
             //传入表名
        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, 1, 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 + "[email protected]" + 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 > 0)
        {
            sqlWhere = sqlWhere.Remove(sqlWhere.LastIndexOf(‘,‘), 1);
        }
        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 == 0)
            strSql.Append(" * ");
        else
        {
            for (int i = 0; i < columns.Length; i++)
            {
                strSql.Append(columns[i] + ",");
            }
            strSql.Remove(strSql.Length - 1, 1);
        }
        strSql.Append(" FROM ( ");
        strSql.Append(" SELECT ROW_NUMBER() OVER (");

        if (sortIndex >= 0 && sortIndex < columns.Length - 1)
        {
            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 > 0)
        {
            strSql.Append(" where 1=1");
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                strSql.Append(sqlWhere.TrimEnd(‘,‘));
            }
            if (!string.IsNullOrEmpty(sqlOrWhere))
            {
                strSql.Append(" and ( " + sqlOrWhere.Substring(0, sqlOrWhere.Length - 3) + " )");
            }
        }
        strSql.Append(" ) TT");
        strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", (pageSize * (page - 1) + 1), 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 > 0)
        {
            strSql.Append(" where 1=1");
            if (!string.IsNullOrEmpty(sqlWhere))
            {
                strSql.Append(sqlWhere.TrimEnd(‘,‘));
            }
            if (!string.IsNullOrEmpty(sqlOrWhere))
            {
                strSql.Append(" and (" + sqlOrWhere.Substring(0, sqlOrWhere.Length - 3) + ")");
            }
        }
        object obj = SqlHelper.ExecuteScalar(SqlHelper.SHOP_CONN_STR, CommandType.Text, strSql.ToString(), sqlParaList.ToArray());
        int RowsCount = 0;
        if (obj != null)
        {
            return RowsCount = (int)obj;
        }
        else
        {
            return 0;
        }
        //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 - 1, 1);
                sb.Append("},");
            }
            sb.Remove(sb.Length - 1, 1);
            sb.Append("]");
            sb.Append("}");
            return sb.ToString();
        }
时间: 2024-10-09 20:26:20

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

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

初次使用jquery.easyui这个东东,虽然简单,但还是很费力的去研究了一下使用,在使用过程中遇到的问题,下面代码会详细的注释到 引用的文件jquery.min.js              jquery.easyui.min.js 样式:icon.css         easyui.css 页面初始化easy ui 插件 <html xmlns="http://www.w3.org/1999/xhtml"> <div class="cg-op&qu

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

jquery的css详解(二)

jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ||

jQuery选择器代码详解(四)——Expr.preFilter

原创文章,转载请注明出处,多谢! Expr.preFilter是tokenize方法中对ATTR.CHILD.PSEUDO三种选择器进行预处理的方法.具体如下: Expr.preFilter : { "ATTR" : function(match) { /* * 完成如下任务: * 1.属性名称解码 * 2.属性值解码 * 3.若判断符为~=,则在属性值两边加上空格 * 4.返回最终的mtach对象 * * match[1]表示属性名称, * match[1].replace(rune

JQuery选择器代码详解(三)——tokenize方法

原创文章,转载请注明出处,多谢! /* * tokenize函数是选择器解析的核心函数,它将选择器转换成两级数组groups * 举例: * 若选择器为"div.class,span",则解析后的结果为: * group[0][0] = {type:'TAG',value:'div',matches:match} * group[0][1] = {type:'CLASS',value:'.class',matches:match} * group[1][0] = {type:'TAG'

Jquery ajax 参数 详解

Jquery ajax 参数主要如下: url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步

jQuery选择器代码详解(七)——elementMatcher函数

要读懂Sizzle的Compile执行过程,首先需要弄清楚涉及的各个子程序的功能和关键变量和作用,我将逐一对jQuery-1.10.2版本的Compile代码进行说明,望能给予大家帮助. elementMatcher(matchers) 1.源码 function elementMatcher(matchers) { return matchers.length > 1 ? function(elem, context, xml) { var i = matchers.length; while

jQuery选择器代码详解(八)——addCombinator函数

function addCombinator(matcher, combinator, base) 1.源码 function addCombinator(matcher, combinator, base) { var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; return combinator.first ? // Check a

jQuery选择器代码详解(五)——实例说明tokenize的解析过程

原创文章,转载请写明出处,多谢! 以下分析基于jQuery-1.10.2.js版本. 下面将以$("div:not(.class:contain('span')):eq(3)")为例,说明tokenize和preFilter各段代码是如何协调完成解析的.若想了解tokenize方法和preFilter类的每行代码的详细解释,请参看如下两篇文章: jQuery选择器代码详解(三)--tokenize方法 jQuery选择器代码详解(四)--Expr.preFilter 下面是tokeni