zoukankan      html  css  js  c++  java
  • 将数据处理成easyui控件需要的格式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    
    
    namespace Original.Common
    {
        /// <summary>
        /// 将数据转换成easyui控件支持的数据格式
        /// </summary>
        public static class JsonHelper
        {
            /// <summary>
            /// 将DataTable转换成Combobox支持的数据格式
            /// </summary>
            /// <param name="dt">数据源DataTable</param>
            /// <param name="valueField">id字段名称</param>
            /// <param name="textField">text字段名称</param>
            /// <returns>json</returns>
            public static string DataTableToCombobox(DataTable dt, string valueField, string textField)
            {
                List<Combobox> lst = new List<Combobox>();
                foreach (DataRow row in dt.Rows)
                {
                    if (row[valueField] == DBNull.Value || row[textField] == DBNull.Value)
                    {
                        continue;
                    }
                    lst.Add(new Combobox() { id = row[valueField].ToString(), text = row[textField].ToString() });
                }
                string json = JsonConvert.SerializeObject(lst);
                return json;
            }
    
            /// <summary>
            /// 将实体转换成json
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="t">实体实例</param>
            /// <returns>json</returns>
            public static string ModelToJson<T>(T t)
            {
                string json = JsonConvert.SerializeObject(t);
                return json;
            }
            /// <summary>
            /// DataTable转换成DataGrid数据格式
            /// </summary>
            /// <param name="dt">数据源DataTable</param>
            /// <param name="iRecordCount">数据总记录数</param>
            /// <returns>json</returns>
            public static string DataTableToDataGrid(DataTable dt, int iRecordCount)
            {
                DataGrid dg = new DataGrid();
                dg.total = iRecordCount.ToString();
                dg.rows = dt;
                string dtJson = JsonConvert.SerializeObject(dg, new JsonConverter[] { new DataTableConverter() });
                return dtJson;
            }
            /// <summary>
            /// DataTable转换成Combotree数据格式
            /// </summary>
            /// <param name="dt">数据源DataTable</param>
            /// <param name="parentValue">一级节点的父ID值</param>
            /// <param name="idField">id字段名称</param>
            /// <param name="parentField">父字段名称</param>
            /// <param name="textField">显示值的字段名称</param>
            /// <returns>json</returns>
            public static string DataTableToCombotree(DataTable dt, string parentValue, string idField, string parentField, string textField)
            {
                List<Combotree> lstCombotree = new List<Combotree>();
                BindTree(dt, null, parentValue, lstCombotree, idField, parentField, textField);
                string dtJson = JsonConvert.SerializeObject(lstCombotree);
                return dtJson;
            }
    
            #region 辅助方法
            /// <summary>
            /// 构造Combotree结构数据
            /// </summary>
            /// <param name="dtSource">DataTable数据源</param>
            /// <param name="parentNode">父结点</param>
            /// <param name="parentID">一级节点的父ID</param>
            /// <param name="ListCombotree">Combotree空列表</param>
            private static void BindTree(DataTable dtSource, Combotree parentNode, string parentID, List<Combotree> ListCombotree, string idField, string parentField, string textField)
            {
                DataRow[] rows = dtSource.Select(string.Format("{0}='{1}'", parentField, parentID));
                foreach (DataRow row in rows)
                {
                    if (row[idField] == DBNull.Value || row[textField] == DBNull.Value)
                    {
                        continue;
                    }
                    Combotree node = new Combotree();
                    node.text = row[textField].ToString();
                    node.id = row[idField].ToString();
                    BindTree(dtSource, node, row[idField].ToString(), ListCombotree, idField, parentField, textField);
                    if (parentNode == null) //(row[arg.parentid].ToString() == "-1")
                    {
                        // 一级数据
                        ListCombotree.Add(node);
                    }
                    else
                    {
                        // 子级数据
                        parentNode.children.Add(node);
                    }
                }
            }
            #endregion
        }
        #region easyui 控件结构
        /// <summary>
        /// Combobox
        /// </summary>
        [Serializable]
        public class Combobox
        {
            /// <summary>
            ////// </summary>
            public string id { get; set; }
    
            /// <summary>
            /// 显示的名称
            /// </summary>
            public string text { get; set; }
        }
    
        /// <summary>
        /// Combobox
        /// </summary>
        [Serializable]
        public class Combotree
        {
            /// <summary>
            /// value的值
            /// </summary>
            public string id { get; set; }
    
            /// <summary>
            /// text显示的值
            /// </summary>
            public string text { get; set; }
    
            /// <summary>
            /// 子列表
            /// </summary>
            public List<Combotree> children { get; set; }
        }
    
        /// <summary>
        /// DataGrid
        /// </summary>
        [Serializable]
        public class DataGrid
        {
            /// <summary>
            /// 数据总记录
            /// </summary>
            public string total { get; set; }
    
            /// <summary>
            /// 数据源DataTable
            /// </summary>
            public DataTable rows { get; set; }
        }
        #endregion
    }
  • 相关阅读:
    漫谈 IP 协议
    Git常用组合操作
    my questions of C#
    关于C#多态的思考
    设计模式:示例与思考
    C#环境搭建,以及C#编译器的使用
    网络模型和TCP协议族
    Understanding TCP/IP Network Stack
    Get on the CORBA
    Introduction to COBRA
  • 原文地址:https://www.cnblogs.com/coder-soldier/p/6901051.html
Copyright © 2011-2022 走看看