将数据处理成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
}
时间: 2024-10-27 03:02:04

将数据处理成easyui控件需要的格式的相关文章

easyui表单多重验证,动态设置easyui控件

要实现的功能:在做添加学生信息的时候,利用easyui的验证功能判断 学号是否重复和学号只能为数字 最终效果如下图: 但在做这个的过程中,遇到了一系列的问题: 扩展validatebox的验证方法,最开始的验证代码如下: 1 //学号格式只能为数字 ****//这里没有问题**** 2 number: {//value值为文本框中的值 3 validator: function (value) { 4 var reg = /^[0-9]*$/; 5 return reg.test(value);

easyui 控件获取焦点方式

针对easyui控件前端组织的dom做分析,如下: combo/combobox/combogrid类似结构如下: <input class="easyui-datebox datebox-f combo-f textbox-f" id="myid" data-options="required: true,buttons:buttons,editable:false,onSelect:selectSDate" style="wi

mysql中以blob形式存储的图片文件 通过ajax方式传输 在js中设置成img控件的src

第一步,读取blob数据, 第二步,将blob数据转换成byte数组 第三步,将byte数据进行base64加密转换成字符串并回传 第四步,接收字符串 第五步,将img控件的src设置成"data:image/jpeg;base64,"+接收的字符串; 相关代码: java: public String getAccountImg(String alias) { String sql = "SELECT imgrawdata FROM wx_account WHERE ali

新手学EasyUI----动态拼接EasyUI控件

最近在做的项目中,根据查询到的数据,然后动态的拼接easyUI的控件显示到界面上.在数据库中,有一个命令的表,还有一个参数的表,先到命令的表中去查询这一个设备有哪些命令,比如说,摄像头有一个转动的命令,那么就要把转动这个命令动态的拼接成EasyUI的Button按钮,然后根据命令去查询这个命令下的参数,比如说,转动是有角度的,10°,20°--,这个度就是命令下的参数,然后动态的拼接成text或者combobox的样式. 下面就把代码展示一下,B层和D层都是简单的查询,返回的是DataTable

EasyUI----动态拼接EasyUI控件

近期在做的项目中.依据查询到的数据,然后动态的拼接easyUI的控件显示到界面上. 在数据库中,有一个命令的表,另一个參数的表,先到命令的表中去查询这一个设备有哪些命令,比方说.摄像头有一个转动的命令,那么就要把转动这个命令动态的拼接成EasyUI的Buttonbutton.然后依据命令去查询这个命令下的參数,比方说,转动是有角度的,10°,20°--.这个度就是命令下的參数,然后动态的拼接成text或者combobox的样式. 以下就把代码展示一下,B层和D层都是简单的查询.返回的是DataT

easyui控件使用例子

1.easyui之dataGrid分页加载数据例子 注意:1)分页表格通过url获得数据会提交page,rows两个参数:后台需要获取这两个参数并且由此得到 int pageSize=rows/page;//每页记录数 int pageNum=page;//当前页面 之后获得分页数据可用sql:............LIMIT "+(pageNum-1)*pageSize+","+pageSize;放回需要的指定页面数据 2)后台代码需要放回固定格式的json数据{&quo

easyui控件的加载顺序

使用easyui做布局时,会模仿窗口程序界面,做出一些较复杂的布局.按由外层到内层的顺序: (最外层)panel->tabs->tabs1 ->tabs2->layout->北区 ->中区-> panel多个...(最里层) ->西区 开始没注意控件的加载顺序,只是将同一种控件统一加载了结果最里层的panel尺寸超出父容器. 一时想不明白,后来忽感觉到easyui会在加载控件时计算它的尺寸, 如果先加载了内层的panel再加载它的父容器控件,则一定尺寸不对.

Easyui 控件的初始化方法

问题: Easyui的控件在初始化的时候有两种方式: 页面指定class属性 js里初始化该id为easyui的控件 那么问题是: 如果页面不指定class属性,只是使用js初始化的话,会导致无法用控件选取该id的指定控件的方法吗? 解决: 经过测试,只是使用js初始化的话,可以选取该控件 如果出现不能选取的问题,一般情况下都是js报错了,导致无法加载. 原文地址:https://www.cnblogs.com/hackxiyu/p/8321435.html

cocos2dx3.2利用ProgressTimer组合成评分控件

一.制作背景 现在很多游戏或者应用需要评分,就是一般来说满分10分,一般用星星来表示. 那么cocos2dx里面如何制作评分这样的控件呢? 我的打算是进度条组合成就行了. 二.材料准备 如上图所示,即2颗小星星即可. 三.最终效果 四.代码实现 ///////////////////////////////////////////////////////////////////////////////// /***************************ScoreBar Class***