前端用的jqueryUI框架获取json格式数据绑定显示表格。

后端通过WebService获取的数据是DataTable。

现将获取DataTable转Json,也支持将数据集合转Json。

一。项目中引用:Newtonsoft.Json

二。功能代码,很简单:

using System;
using System.Data;

namespace WebApplication1.Common
{
public class DataTableToModel
{

public static DataTable GetData()
{
  DataTable dt = new DataTable();
  dt.Columns.Add("UserId", typeof(Int32));
  dt.Columns.Add("UserName", typeof(string));
  dt.Columns.Add("Education", typeof(string));
  dt.Columns.Add("Location", typeof(string));
  dt.Rows.Add(1, "Satinder Singh", "Bsc Com Sci", "Mumbai");
  dt.Rows.Add(2, "Amit Sarna", "Mstr Com Sci", "Mumbai");
  dt.Rows.Add(3, "Andrea Ely", "Bsc Bio-Chemistry", "Queensland");
  dt.Rows.Add(4, "Leslie Mac", "MSC", "Town-ville");
  dt.Rows.Add(5, "Vaibhav Adhyapak", "MBA", "New Delhi");
  return dt;
}

/// <summary>
/// 用于视图层数据表绑定信息
/// </summary>
/// <typeparam name="T"></typeparam>
public class ViewBaseModel<T> where T : class
{
  public int total { get; set; }
  public int page { get; set; }
  public int records { get; set; }
  public T rows { get; set; }
}

/// <summary>
/// 将DataTable中指定列数据 转 Json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dataList"></param>
/// <param name="columnNames"></param>
/// <returns></returns>
public static string Convert<T>(ViewBaseModel<T> dataList) where T :class {
  return Newtonsoft.Json.JsonConvert.SerializeObject(dataList);
}

/// <summary>
/// 将DataTable中指定列数据 转 Json
/// </summary>
/// <param name="total">总页数</param>
/// <param name="page">指定页序号,起始为1</param>
/// <param name="records">数据总数</param>
/// <param name="dTable">数据集合</param>
/// <param name="columnNames">显示DataTable中指定列</param>
/// <returns>返回json格式数据</returns>
public static string ConvertTable(int total, int page, int records, DataTable dTable, params string[] columnNames) {

  if (dTable == null || dTable.Rows.Count <= 0)
  {
  return string.Empty;
  }

  if (columnNames != null && columnNames.Length > 0)
  {
  dTable = dTable.DefaultView.ToTable(false, columnNames);
  }

  return ConvertCollection(total, page, records, dTable);
}

/// <summary>
/// 将数据集合 转 Json
/// </summary>
/// <typeparam name="T">指定类型集合</typeparam>
/// <param name="total">总页数</param>
/// <param name="page">指定页序号,起始为1</param>
/// <param name="records">数据总数</param>
/// <param name="dataCollection">类型集合对象</param>
/// <returns></returns>
public static string ConvertCollection<T>(int total, int page, int records, T dataCollection) where T:class
{
  if (dataCollection == null)
  {
    return string.Empty;
  }

  var jsonModel = new ViewBaseModel<T>();
  jsonModel.page = page;
  jsonModel.records = records;
  jsonModel.total = total;
  jsonModel.rows = dataCollection;

  return Newtonsoft.Json.JsonConvert.SerializeObject(jsonModel);
  }
}
}

三。外部调用:

1.

DataTable dtable = Common.DataTableToModel.GetData();
if (dtable == null || dtable.Rows.Count <= 0)
{
return View();
}

DataTable newTable = dtable.DefaultView.ToTable(false, "UserName");
var jsonModel = new Common.DataTableToModel.ViewBaseModel<DataTable>();
jsonModel.page = 1;
jsonModel.records = 1200;
jsonModel.total = 100;
jsonModel.rows = newTable;

ViewBag.Data = Common.DataTableToModel.Convert(jsonModel);

2.

  ViewBag.Data = Common.DataTableToModel.ConvertTable(1, 1, 1, Common.DataTableToModel.GetData());

3.

public class dataRows {
  public int sid { get; set; }
  public string uname { get; set; }
  public DateTime addTime { get; set; }
}

var drList = new List<dataRows> {
  new dataRows() { addTime=DateTime.Now, sid=1, uname="test111"},
  new dataRows() { addTime=DateTime.Now, sid=2, uname="test222"},
  new dataRows() { addTime=DateTime.Now, sid=3, uname="test333"}
};

ViewBag.Data = Common.DataTableToModel.ConvertCollection<List<dataRows>>(1, 1, 1,drList);

DataTable/集合 转 Json的更多相关文章

  1. Datatable/Dataset 转 JSON方法

    当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...

  2. JSON转换类(二)--List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  3. List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  4. Datatable转成Json方式两则

    1, Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据 1.这里下载:http://www.newtonsoft.com/products/json/ ...

  5. DataTable 对象 转换为Json 字符串

    /// <summary> /// DataTable 对象 转换为Json 字符串 /// </summary> /// <param name="dt&qu ...

  6. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  7. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  8. DataTable转换成json字符串

    将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...

  9. 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)

    public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...

随机推荐

  1. ubuntu 安装vsftpd服务器 ftp

    http://www.cnblogs.com/likwo/p/3154868.html http://help.aliyun.com/knowledge_detail.htm?knowledgeId= ...

  2. 关于kali2.0 rolling无法连接数据的解决办法

    在使用kali2.0时,经常遇到metasploit无法连接数据库的问题,经过在网上寻找资料,很多都是对kali2.0的,有些路径都是不同的了,所以未能解决, 最后在自己的摸索下,找到了如下方法: 其 ...

  3. 问题:QXcbConnection: Could not connect to display

    Wkhtmltopdf 失败 (错误代码: -6). 消息: The switch --header-spacing, is not support using unpatched qt, and w ...

  4. Delphi多线程编程--线程同步的方法(事件、互斥、信号、计时器)简介

    更详细的可以参考:http://www.cnblogs.com/xumenger/p/4450659.html 或者参考之后的博客 四个系统内核对象(事件.互斥.信号.计时器)都是线程同步的手段,从这 ...

  5. 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. Logistic回归 python实现

    Logistic回归 算法优缺点: 1.计算代价不高,易于理解和实现2.容易欠拟合,分类精度可能不高3.适用数据类型:数值型和标称型 算法思想: 其实就我的理解来说,logistic回归实际上就是加了 ...

  7. ASP.NET4.5Web API及非同步程序开发系列(3)

    接着上一篇博客的内容做一个补充,正好是一个大哥提出来的,我们看看一个有趣的现象. 请求相关问题的补充: 我们先在Controller中的定义一个我们在前一篇博客中已经测试过的方法如下: public ...

  8. 在SQL SERVER中实现RSA加解密函数(第一版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.1 注:   转载请保留此信息 ...

  9. 解决SVN更新代码是出现previous operation has not finished; run cleanup if it was interrupted这个错误

    解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db   (查看.svn文件需要打开显示隐藏文件夹) 3.将sqlite3.exe放到.sv ...

  10. 关于action和category的认知区别

    在我的了解, action: intent 有一个或多个action,如果过滤规则中能够匹配到其中一个,是可以成功的 category: intent有一个或多个category,过滤规则需要满足对应 ...