DataTable/集合 轉 Json

前端用的jqueryUI框架獲取json格式數據綁定顯示錶格。前端

後端經過WebService獲取的數據是DataTable。jquery

現將獲取DataTable轉Json,也支持將數據集合轉Json。json

一。項目中引用:Newtonsoft.Json後端

 

二。功能代碼,很簡單:框架

using System;
using System.Data;spa

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;
}ci

/// <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; }
}get

/// <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);
}string

/// <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);

相關文章
相關標籤/搜索