Esempio n. 1
0
        /// <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()
            });
        }