Datatable转换为Json 然后把Json数据放入 js 文件中

来源:互联网 发布:淘宝 乒乓球发球机 编辑:程序博客网 时间:2024/05/22 08:02

C#中把Datatable转换为Json的5个代码实例

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


0 0
原创粉丝点击