前端用的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. opendrive

    opendrive和其他许多网盘一样.注册拥有5G的免费空间.每天1G的免费外链流量.更重要的是,他能够给你提供一个直接外链!这是国内外许多网盘都没有的.当你上载了一个MP3,你想用直接外链的形式在博 ...

  2. Android -- 案例学习积累

    Theme ActionBar / ToolBar android.support.design.widget.CollapsingToolbarLayout android.support.desi ...

  3. Sql Server 中锁的概念

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  4. 大部分人都会做错的经典JS闭包面试题

    由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) ...

  5. android中设置控件获得焦点 (转)

    android中,要使控件获得焦点,需要先setFocus,再requestFocus. 以Button为例:                 btn.setFocusable(true);      ...

  6. Linux 第06天

    Linux 第06天 1.SAMBA服务器————(linux和windows的文件共享) 1.1 安装 yum install samba -yum 1.2 配置文件 /etc/samba/smb. ...

  7. 浏览器-04 WebKit 渲染2

    渲染主循环(main loop)和requestAnimationFrame requestAnimationFrame 使用requestAnimationFrame而非setTimeout/set ...

  8. BZOJ 1455 罗马游戏 ——左偏树

    [题目分析] 左偏树的模板题目,大概就是尽量维护树的深度保持平衡,以及尽可能的快速合并的一种堆. 感觉和启发式合并基本相同. 其实并没有快很多. 本人的左偏树代码自带大常数,借鉴请慎重 [代码] #i ...

  9. eclipse通过ctrl+shift+t无法找到源文件类的解决方法

    通过ctrl + shift + t找对应的类时,类明明存在,并且也在编译路径下,但就是查找不到,一个可能的原因就是eclipse为类建立的索引出了问题. 解决的方法是:找到项目所在工作空间下的.me ...

  10. 诡异的C语言实参求值顺序

    学了这么久的C语言,竟然第一次碰到这么诡异的实参求值顺序问题,大跌眼镜.果然阅读面太少了! #include<iostream> void foo(int a, int b, int c) ...