Datatable转换为Json 然后,Json数据导入 js 档
/// <summary>
/// Datatable转换为Json
/// </summary>
/// <param name="table">Datatable对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DataTable dt)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
DataRowCollection drc = dt.Rows;
for (int i = 0; i < drc.Count; i++)
{
jsonString.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
string strKey = dt.Columns[j].ColumnName;
string strValue = drc[i][j].ToString();
Type type = dt.Columns[j].DataType;
jsonString.Append("\"" + strKey + "\":");
strValue = StringFormat(strValue, type);
if (j < dt.Columns.Count - 1)
{
jsonString.Append(strValue + ",");
}
else
{
jsonString.Append(strValue);
}
}
jsonString.Append("},");
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
/// <summary>
/// 格式化字符型、日期型、布尔型
/// </summary>
/// <param name="str"></param>
/// <param name="type"></param>
/// <returns></returns>
private static string StringFormat(string str, Type type)
{
if (type == typeof(string))
{
str = String2Json(str);
str = "\"" + str + "\"";
}
else if (type == typeof(DateTime))
{
str = "\"" + str + "\"";
}
else if (type == typeof(bool))
{
str = str.ToLower();
}
else if (type != typeof(string) && string.IsNullOrEmpty(str))
{
str = "\"" + str + "\"";
}
return str;
}
/// <summary>
/// 过滤特殊字符
/// </summary>
/// <param name="s">字符串</param>
/// <returns>json字符串</returns>
private static string String2Json(String s)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
char c = s.ToCharArray()[i];
switch (c)
{
case '\"':
sb.Append("\\\""); break;
case '\\':
sb.Append("\\\\"); break;
case '/':
sb.Append("\\/"); break;
case '\b':
sb.Append("\\b"); break;
case '\f':
sb.Append("\\f"); break;
case '\n':
sb.Append("\\n"); break;
case '\r':
sb.Append("\\r"); break;
case '\t':
sb.Append("\\t"); break;
default:
sb.Append(c); break;
}
}
return sb.ToString();
}
<2>
//从数据库里查询出省名
var sql = "select top 35 locid,locname,parentid from location where loctype=1";
var dt_pro = SQLHelper.Get_DataTable(sql, SQLHelper.GetCon(), new Dictionary<string, DBParam>());
//将dt_pro这个DataTable转换成json
var tt_pro = ToJson(dt_pro); //查询出城市的名称
var vsql = "select locid,locname,parentid from location where parentid in (select top 35 locId from location where loctype=1) "; var dt_city = SQLHelper.Get_DataTable(vsql, SQLHelper.GetCon(), new Dictionary<string, DBParam>());
//将dt_city这个DataTable转换成json
var tt_city = ToJson(dt_city);
<3> 建立一个js 文件 在文件中 写两个变量 var cn_pro,和var cn_city 将 tt_pro的值赋值给 cn_pro ,将tt_city的值赋值 cn_city 就成了一个js 文件了
js内如入 var cn_pro = [{ "locid": 1, "locname": "北京", "parentid": 0 }, { "locid": 673, "locname": "上海", "parentid": 0 }];
var cn_city = [{ "locid": 2, "locname": "北京", "parentid": 1 }, { "locid": 674, "locname": "上海", "parentid": 673 }]
当然我这是简写的。里面的内如大多都去掉了。就保留了前面2条数据做演示样例
================================================================
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MemberCenter.Master"
Inherits="System.Web.Mvc.ViewPage<bigtree.Model.MemberDetail>"%>
<%@ Import Namespace="bigtree" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm()) {%> <div class="rightCon">
<div class="nowTil">
<h3>
个人资料</h3>
</div>
<ul class="memForm">
<li>
<p class="setterTil">
手机:</p>
<div class="setterBd">
<%--<input type="text" class="setterInput fl" value="" readonly="">--%>
<%: Html.TextBoxFor(x => x.Mobile, new { @class = "setterInput fl" ,@readonly=""})%> <div class="setterExplain">
(请填写真实入住人姓名。每间房仅仅填写以为就可以)</div>
</div>
</li>
<li>
<p class="setterTil">
姓名:</p>
<div class="setterBd">
<%--<input type="text" class="setterInput fl" value="张小凡" readonly="">--%>
<%: Html.TextBoxFor(x => x.Name, new { @class = "setterInput fl"})%>
</div>
</li>
<li>
<p class="setterTil">
邮箱:</p>
<div class="setterBd">
<%-- <input type="text" class="setterInput fl">--%>
<%: Html.TextBoxFor(x => x.Email, new { @class = "setterInput fl" })%> <% var i = Model.EmailFlag;
if (i == true)
{ %> <div class="setterExplain">已验证</div> <% }%> <% else {%>
<div class="setterExplain">未验证</div>
<% }%> </div>
</li>
<li>
<p class="setterTil">
昵称:</p>
<div class="setterBd">
<%--<input type="text" class="setterInput fl">--%>
<%: Html.TextBoxFor(x=>x.UserName,new {@class="setterInput fl"}) %>
</div>
</li>
<li>
<p class="setterTil">
性别:</p>
<div class="setterBd">
<label class="sex">
<%--<input type="radio" name="sex">--%>
<%:Html.RadioButtonFor(x=>x.Sex,"男", new{@name="sex"})%>
男</label>
<label class="sex">
<%--<input type="radio" name="sex">--%>
<%: Html.RadioButtonFor(x=>x.Sex,"女", new{@name="sex"})%>
女</label>
</div>
</li>
<% var province = ViewData["province"] as System.Data.DataTable;%>
<li>
<p class="setterTil">
经常使用出发城市:</p>
<div class="setterBd">
<div class="selectBox sp1 fl">
<p id="displyPro" class="getNum sp3">
北京</p>
<div class="xjt">
</div>
<ul id="proList" class="selectSlideBox none sp3" style="">
</ul>
</div>
<div class="setterExplain sp">
省</div>
<div class="selectBox sp1 fl">
<p id="displyCity" class="getNum sp3">
北京</p>
<div class="xjt">
</div>
<ul id="cityList" class="selectSlideBox none sp3" style="">
</ul>
</div>
<div class="setterExplain">
市</div>
</div>
</li>
</ul>
<input type="hidden" id="selectCityId" value="1" />
<input type="hidden" id="selectCityName" value="北京" />
<input type="submit" value="保存" class="saveBtn">
</div>
<% } %>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server"> <script type="text/javascript">
$(function () {
$(".navList > :contains('个人资料')").addClass("cur"); // set province
var proList = "";
$.each(cn_pro, function (i, kv) {
proList += "<li data-id='" + kv.locid + "'>" + kv.locname + "</li>";
}); $("#proList").html(proList); $("#proList li").bind("click", function () {
var li = $(this);
var cityList = "";
$.each(cn_city, function (i, kv) {
if (kv.parentid == li.attr("data-id")) {
cityList += "<li data-id='" + kv.locid + "'>" + kv.locname + "</li>";
}
});
$("#cityList").html(cityList);
$("#displyPro").text(li.text());
$("#displyCity").text($("#cityList").children().first().text()); $("#selectCityId").val($("#cityList").children().first().attr("data-id"));
$("#selectCityName").val($("#cityList").children().first().text()); $("#cityList li").bind("click", function () { $("#displyCity").text($(this).text()); $("#selectCityId").val($(this).attr("data-id"));
$("#selectCityName").val($(this).text()); });
}); })
</script>
<script type="text/javascript" src="../../Scripts/Location.js"></script>
</asp:Content>
版权声明:本文博主原创文章,博客,未经同意不得转载。
Datatable转换为Json 然后,Json数据导入 js 档的更多相关文章
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- python 全栈开发,Day126(创业故事,软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON)
作业讲解 下载代码: HBuilder APP和flask后端登录 链接:https://pan.baidu.com/s/1eBwd1sVXTNLdHwKRM2-ytg 密码:4pcw 如何打开APP ...
- 利用 js-xlsx 实现 Excel 文件导入并解析Excel数据成json格式的数据并且获取其中某列数据
演示效果参考如下:XML转JSON 另一个搭配SQL实现:http://sheetjs.com/sexql/index.html 详细介绍: 1.首先需要导入js <script src=&qu ...
- 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON
全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...
- 把DataTable转换为泛型List<T>或是JSON
在开发ASP.NET Web API或ASP.NET MVC时,我们从数据库得到的数据往往是DataSet或是DataTable.为了能让前端JQuery能方便使用至这些数据,我们需要把这些数据转换为 ...
- C#中把Datatable转换为Json的5个代码实例
一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...
- 在JS和.NET中使用JSON (以及使用Linq to JSON定制JSON数据)
转载原地址: http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如 ...
- .NET DataTable转换为JSON格式的字符串
在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递. 比如说: // ...
随机推荐
- activity_main.xml: java.lang.NullPointerException
1.错误描写叙述 eclipse.buildId=4.4.0.I20140606-1215 java.version=1.7.0_67 java.vendor=Oracle Corporation B ...
- 开源mp3播放器--madplay 编译和移植 简记
madplay是一款开源的mp3播放器. http://madplay.sourcearchive.com/ 下面简单记录一下madplay的编译与移植到ARM开发板上的过程 一.编译x86版本的ma ...
- Android常用开源项目
Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progre ...
- Embedded Linux Primer----嵌入式Linux基础教程--前言
APractical,Real-WorldApproach ChristopherHallinan 计算机无处不在. 事实上,当然了,对于那些大约在过去25年期间没有生活在洞穴中的人来说没有什么惊奇的 ...
- sql连接错误(Microsoft SQL Server,错误:2)
昨天用SQL语句建表的时候写了一段代码,对于代码的逻辑和内容我不太肯定对不正确.反正是毫不犹豫的让它运行了,过程中出现好几个错误,当时没有太在意,想着大不了出错了再重写一个.结果--玩坏了,从昨天到如 ...
- CodeForce 356A Knight Tournament(set应用)
Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- uva 1434 - YAPTCHA(数论)
题目链接:uva 1434 - YAPTCHA 题目大意:给定n和k,求题目中给定的式子S(n). 解题思路:威尔逊定理,x为素数时有,((x−1)!+1)%x==0,所以对于本题.假设3*k+7为素 ...
- Keil - 编译错误总结 01
Keil 编译 STM32project,出现下述错误. 并且. Options for Target -> Output - Browse Information 选项无法勾选. ...
- I2C操作笔记——以 AT24C04为例
1.前言 对于大多数project师而言,I2C永远是一个头疼的问题.相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些.在这里以AT24C04为例说明I2C使用过程中 ...
- Python什么是二次开发的意义?python在.net项目采用
任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作"二次开发"..net站点的话python主要是CGI才用.能够用python编写B/S程序. 解释一下二次开 ...