/// <summary> /// 分页列表 /// </summary> /// <param name="page"></param> /// <param name="rows"></param> /// <param name="searchType"></param> /// <param name="keyword"></param> /// <returns></returns> public ActionResult AccountPageData(int page = 1, int rows = 20, string searchType = "", string keyword = "") { var conditions = new Dictionary <string, string>(); if (searchType.IsNotEmpty() && keyword.IsNotEmpty()) { conditions.Add(searchType, keyword); } var request = new PageRequest { CurrentPage = page, PageSize = rows, Conditions = conditions, Sorts = new Dictionary <string, string> { { "CreateDate", "DESC" } } }; var orderBy = new List <string>(); foreach (var pair in request.Sorts) { orderBy.Add(pair.Key + " " + pair.Value); } var dataSql = string.Format( "SELECT * FROM (SELECT *,ROW_NUMBER() OVER(ORDER BY {0}) AS RowNum FROM RC_File_Account WHERE 1=1 ", string.Join(",", orderBy.ToArray())); const string countSql = "SELECT COUNT(Id) FROM RC_File_Account WHERE 1=1 "; var parms = new List <SqlParameter>(); var whereSql = ""; if (request.Conditions.Count > 0) { foreach (var condition in request.Conditions) { switch (condition.Key) { default: if (!condition.Value.IsEmpty()) { whereSql += string.Format(" AND {0} like '%'+@{0}+'%' ", condition.Key); parms.Add(new SqlParameter { ParameterName = condition.Key, Value = condition.Value }); } break; } } } dataSql += string.Format("{0})temp WHERE RowNum BETWEEN {1} AND {2} ORDER BY temp.RowNum ASC ", whereSql, request.Begin, request.End); var response = new PageResponse { Data = SqlHelper.Query(dataSql, parms.ToArray()), Total = SqlHelper.ExecuteScalar(countSql + whereSql, parms.ToArray()).ToInt() }; return(new ContentResult { Content = response.ToJson() }); }