Asp.net生成Extjs-Gridpanel数据格式json类

来源:互联网 发布:red hat linux 下载 编辑:程序博客网 时间:2024/06/08 09:25

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
//using System.Web.Script.Serialization;

/// <summary>
/// JSONHelper 的摘要说明
/// </summary>
public class JSONHelper
{
    //对应JSON的singleInfo成员
    public string singleInfo = string.Empty;
    protected string _error = string.Empty;
    protected bool _success = true;
    protected long _totalCount = 0;
    protected System.Collections.ArrayList arrData = new ArrayList();
    protected System.Collections.ArrayList arrDataItem = new ArrayList();


    public JSONHelper()
    {

    }

    //public static string ToJSON(object obj)
    //{
    //    JavaScriptSerializer serializer = new JavaScriptSerializer();
    //    return serializer.Serialize(obj);
    //}

    //public static string ToJSON(object obj, int recursionDepth)
    //{
    //    JavaScriptSerializer serializer = new JavaScriptSerializer();
    //    serializer.RecursionLimit = recursionDepth;
    //    return serializer.Serialize(obj);
    //}

    //对应于JSON的success成员
    public bool success
    {
        get
        {
            return _success;
        }
        set
        {
            //如设置为true则清空error
            if (success) _error = string.Empty;
            _success = value;
        }
    }

    //对应于JSON的error成员
    public string error
    {
        get
        {
            return _error;
        }
        set
        {
            //如设置error,则自动设置success为false
            if (value != "") _success = false;
            _error = value;
        }
    }

    public long totlalCount
    {
        get { return _totalCount; }
        set { _totalCount = value; }
    }


    //重置,每次新生成一个json对象时必须执行该方法
    public void Reset()
    {
        _success = true;
        _error = string.Empty;
        singleInfo = string.Empty;
        arrData.Clear();
        arrDataItem.Clear();
    }

 

    public void AddItem(string name, string value)
    {
        arrData.Add("/"" + name + "/":" + "/"" + value + "/"");
    }

 

    public void ItemOk()
    {
        arrData.Add("<BR>");
        totlalCount++;
    }

    //序列化JSON对象,得到返回的JSON代码
    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("{");
        sb.Append("totalCount:" + totlalCount.ToString() + ",");
        sb.Append("success:" + _success.ToString().ToLower() + ",");
        sb.Append("error:/"" + _error.Replace("/"", "
///"") + "/",");
        sb.Append("singleInfo:/"" + singleInfo.Replace("/"", "
///"") + "/",");
        sb.Append("data:[");

        int index = 0;
        sb.Append("{");
        if (arrData.Count <= 0)
        {
            sb.Append("}]");
        }
        else
        {
            foreach (string val in arrData)
            {
                index++;

                if (val != "<BR>")
                {
                    sb.Append(val + ",");
                }
                else
                {
                    sb = sb.Replace(",", "", sb.Length - 1, 1);
                    sb.Append("},");
                    if (index < arrData.Count)
                    {
                        sb.Append("{");
                    }
                }

            }
            sb = sb.Replace(",", "", sb.Length - 1, 1);
            sb.Append("]");
        }

        sb.Append("}");
        return sb.ToString();
    }
}

//============================================调用例子=========================

using System;
using System.Data;
using System.Collections.Generic;
using CHY.Model;
namespace CHY.BLL
{
    /// <summary>
    /// 业务逻辑类Book 的摘要说明。
    /// </summary>
    public class Book : CHY.DAL.Book
    {       
        public Book()
        { }

        #region  成员方法

        /// <summary>
        /// 得到book信息分页
        /// </summary>
        /// <param name="start"></param>
        /// <param name="limit"></param>
        /// <param name="sort"></param>
        /// <param name="dir"></param>
        /// <param name="search"></param>
        /// <returns></returns>
        public string GetbookInfos(int start, int limit, string sort, string dir, string search)
        {
            string jsons = "";
            JSONHelper json = new JSONHelper();
            json.success = true;
            DataSet ds = GetInfo(start, limit, sort, dir, search);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                json.AddItem("ID", dr["id"].ToString());
                json.AddItem("BCode", dr["BCode"].ToString());
                json.AddItem("BName", dr["BName"].ToString());
                json.AddItem("Writer", dr["Writer"].ToString());
                json.AddItem("PublishDate", dr["PublishDate"].ToString());
                json.AddItem("BigKind", dr["BigKind"].ToString());
                json.AddItem("SmallKind", dr["SmallKind"].ToString());
                json.AddItem("RegeditDate", dr["RegeditDate"].ToString());
                json.ItemOk();
            }
            json.totlalCount = GetInfoCount(search);
            jsons = json.ToString();
            return jsons;
        }


        /// <summary>
        /// 得到总记录数
        /// </summary>
        /// <returns></returns>
        public int GetInfoCount(string search)
        {
            try
            {
                string sql = "";
                if (search == null)
                    sql = "select count(*) from Book";

                else
                    sql = "select count(*) from Book where " + search;

                int count = int.Parse(CHY.DbHelperSQL.ExecuteScalar(sql).ToString());
                return count;
            }
            catch (Exception)
            {

                throw;
            }
        }


        /// <summary>
        /// 查询角色信息
        /// </summary>
        /// <param name="start"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public DataSet GetInfo(int start, int limit, string sort, string dir, string search)
        {
            string sql;
            if (sort == null)
                sort = "ID";
            if (dir == null)
                dir = "DESC";
            if (search == null)
                sql = "select top " + limit + " * from book where ID not in(select top " + start + " ID from book order by " + sort + " " + dir + ") order by " + sort + " " + dir;
            else
                sql = "select top " + limit + " * from book where " + search + " and ID not in(select top " + start + " ID from book where " + search + " order by " + sort + " " + dir + ") order by " + sort + " " + dir;

            return CHY.DbHelperSQL.Query(sql);
        }

        #endregion  成员方法
    }
}