用友U8存货分类通过DataTable生成EasyUI Tree JSON

来源:互联网 发布:mysql minute函数 编辑:程序博客网 时间:2024/05/25 13:33

<%@ WebHandler Language="C#" Class="InventoryClass" %>using System;using System.Web;using System.Data;using System.Data.SqlClient;using Newtonsoft.Json;public class InventoryClass : IHttpHandler{    DataTable dt = new DataTable();    string json = string.Empty;    public void ProcessRequest(HttpContext context)    {        //选取所有成品类别        using (SqlConnection conn = new SqlConnection(DB.ConnectionStrings.U8))        using (SqlCommand cmd = new SqlCommand("SELECT cInvCCode as id ,cInvCCode + ' ' + cInvCName as text,iInvCGrade ,bInvCEnd FROM InventoryClass WHERE cInvCCode LIKE 'A%' order by cInvCCode", conn))        {            SqlDataAdapter da = new SqlDataAdapter(cmd);            conn.Open();            da.Fill(dt);            //第一个成品类别是A开头,级别为1            getJson("A%", 1);            context.Response.Write(json.Substring(11, json.Length - 13));        }    }    void getJson(string filter, int iInvCGrade)    {        //筛选下一级的分类        DataView dv = new DataView(dt, @"id like '" + filter + "' and iInvCGrade = " + iInvCGrade.ToString(), "", DataViewRowState.CurrentRows);        if (dv.Count > 0)        {            //添加children            if (!string.IsNullOrEmpty(json))            {                json = json.TrimEnd(',').TrimEnd('}') + ",\"children\":[";            }            else            {                json += "\"children\":[";            }            //循环每一行            for (int i = 0; i < dv.Count; i++)            {                //JsonConvert用DataTable比较方便                DataTable dt2 = dt.Clone();                dt2.ImportRow(dv[i].Row);                string s = JsonConvert.SerializeObject(dt2);                json += s.Remove(0, 1).TrimEnd(']') + ",";      //移除前后的[],并加上,                //递归获取下级分类                getJson(dv[i]["id"].ToString() + "%", iInvCGrade + 1);                dt2.Clear();            }            //本层循环完成后去掉后面的,并加上]},            json = json.TrimEnd(',') + "]},";        }    }    public bool IsReusable    {        get        {            return false;        }    }}



生成的JSON可以用于JSON树、下拉列表、网格等

生成树效果:


0 0
原创粉丝点击