DataTable/集合 转 Json

摘要:
前端使用jquery UI框架获取json格式的数据绑定显示表。现在,我们将向Json获取DataTable,并支持向Json传输数据集。功能代码,非常简单:usingSystem;使用System.Data;namespaceWebApplication1.Common{publicclassDataTableToModel{publicstaticDataTableGetData(){DataTabledt=newDataTable();dt.Columns.Add;dt.Clumns.Add;dt.Ccolumns.Add,dt.Coluons.Add;dt.Rows.Add;dt.Rows.Add;dt.Rows.dd;dt.Rrows.Add;returndt;}///用于视图级数据表绑定信息//////publicclassViewBaseModel<T>其中T:class{publicinttotal{get;set;}publicintpage{get,set;}}publicintercords{get set;}{publicTrows{get;set;}}///<Summary>///将DataTable中指定的列数据传输到Json///<Summary>///<typeparamname=“T”>˂/typeparam>//˂paramname=“dataList”>///<paramname=“columnNames”˃//publicstaticstringConvert其中T:class{returnNewtonsoft.Json.JsonConvert.SerializeObject;}//////将DataTable中指定的列数据传输到Json//////总页数//指定页码,从1开始///总数据//数据集//显示DataTable中的指定列/返回json格式的数据publicstaticsringConvertTable{if{returnstring.Empty;}if(columnName!

前端用的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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一个.net6开发的截图后ocr小工具RabbitMQ 把一个queue从一个node转移到另外一个node.下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ADO.NET 2.0 Dataset和Datatable 特性体验(ChinaITLab)

1.新的索引引擎更快的执行效率,下面这段代码在2003中需要157秒,在2005中只要11秒就可以完成: DataSet ds = new DataSet(); ds.Tables.Add("BigTable");ds.Tables[0].Columns.Add("ID", Type.GetType("System.Int32"));ds.Tables[0]...

IText简介及示例

一、iText简介    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。          使用iText非常方便,引入jar包,程序中就可以使用iText类库了。iText.jar包下载地址:http:...

笔记--随时更新

一、电脑先安装SqlServer2008,后安装SqlServer2014 在通过公司封装的Lnd.BaseOper(其内部是通过OLEDBConnection实现的)去访问SqlServer2014的数据库会报错,因为如果先安装2008,再安装2014,导致sqlexpress实例占用了1433端口,2014的实例MSSQLSERVER只能使用动态端口。...

DataTable数据检索的性能分析(转寒江独钓)

我们知道在.NET平台上有很多种数据存储,检索解决方案-ADO.NET Entity Framework,ASP.NET Dynamic Data,XML, NHibernate,LINQ to SQL 等等,但是由于一些原因,如平台限制,比如说必须基于.NET Framework2.0及以下平台;遗留的或者第三方数据接口采用的就是DataTable等等,...

【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中

         小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样、如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这么洼的水平,刚遇到时确实愣了一下。不过还好、等冷静下来之后,慢慢的找到的了解决的办法。现在与大家分享一下处理思路及方法。先说一下这里用到的一...

将DataTable转换成Json格式

方法一:将DataTable数据拼接成json字符串,方法如下: ///<summary> ///dataTable转换成Json格式 ///</summary> ///<param name="dt"></param> ///&...