zoukankan      html  css  js  c++  java
  • .net json 和 Datatable 相互转化

     /// <summary>
       /// 页面加载时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            //判断是否异步请求
            if (Request.QueryString["ajax"] == "1")
            {
                ProcessRequest();
            }
        }
    
        /// <summary>
        /// 处理异步请求
        /// </summary>
        private void ProcessRequest()
        {
            Response.ContentType = "text/html";
    
            string json = Request.Form["json"];
            //反序列化DataTable
            DataTable newdtb = Json2Dtb(json);
    
            //序列化DataTable为JSON
            string back = Dtb2Json(newdtb);
            Response.Write(back);
            Response.End();
        }
    
        /// <summary>
        /// DataTable转Json
        /// </summary>
        /// <param name="dtb"></param>
        /// <returns></returns>
        private string Dtb2Json(DataTable dtb)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            ArrayList dic = new ArrayList();
    
            foreach (DataRow row in dtb.Rows)
            {
                Dictionary<string, object> drow = new Dictionary<string, object>();
                foreach (DataColumn col in dtb.Columns)
                {
                    drow.Add(col.ColumnName, row[col.ColumnName]);
                }
                dic.Add(drow);
            }
    
            return jss.Serialize(dic);
        }
    
        /// <summary>
        /// Json转DataTable
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        private DataTable Json2Dtb(string json)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            ArrayList dic = jss.Deserialize<ArrayList>(json);
            DataTable dtb = new DataTable();
    
            if (dic.Count > 0)
            {
                foreach (Dictionary<string, object> drow in dic)
                {
                    if (dtb.Columns.Count == 0)
                    {
                        foreach (string key in drow.Keys)
                        {
                            dtb.Columns.Add(key, drow[key].GetType());
                        }
                    }
    
                    DataRow row = dtb.NewRow();
                    foreach (string key in drow.Keys)
                    {
    
                        row[key] = drow[key];
                    }
                    dtb.Rows.Add(row);
                }
            }
            return dtb;
        }
     

     前端页面

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
    
        <script type="text/javascript" src="js/json2.js"></script>
    
        <script type="text/javascript">
            //onload
            $(function() {
                //点击botton1
                $("#botton1").click(function() {
                    var url = "default.aspx?ajax=1";
                    var dtb = generateDtb();
                    console.log(dtb);
                    //序列化对象
                    var postdata = JSON.stringify(dtb);
                    console.log(postdata);
                    //异步请求
                    $.post(url, { json: postdata }, function(json) {
                        createTable(json);
                    }, "json")
    
                });
            });
    
            //生成DataTable对象
            function generateDtb() {
                var dtb = new Array();
                for (var i = 0; i < 10; i++) {
                    var row = new Object();
                    row.col1 = i;
                    row.col2 = i % 2 == 0 ? true : false;
                    row.col3 = i + "he
    ll"ow";
                    dtb.push(row);
                }
                return dtb;
            }
    
            //显示Json中的数据
            function createTable(json) {
                var table = $("<table border='1'></table>");
                for (var i = 0; i < json.length; i++) {
                    o1 = json[i];
                    var row = $("<tr></tr>");
                    for (key in o1) {
                        var td = $("<td></td>");
                        td.text(o1[key].toString());
                        td.appendTo(row);
                    }
                    row.appendTo(table);
                }
                table.appendTo($("#back"));
            }
           
        </script>
    
    </head>
    <body>
        qqq
        <form id="form1" runat="server">
        <div>
            <input id="botton1" type="button" value="button" />
            <div id="back">
            </div>
        </div>
        </form>
    </body>
    </html>
  • 相关阅读:
    使用API失效供应商地址Demo(转)
    供应商API补充(详解EBS接口开发之供应商导入)(转)
    供应商地点信息更新(转)
    OAF 小知识
    FNDLOAD移植Lookup Type
    OAF点击事件对页面组件的Required属性不验证
    MFC各种属性定义及DLL使用理解
    mfc制作ActiveX
    QT内置的ICON资源
    [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1
  • 原文地址:https://www.cnblogs.com/zoumin123/p/6691683.html
Copyright © 2011-2022 走看看