Ejemplo n.º 1
0
        //---------<<< 还原 >>>--------------------------------------------------------------------
        public DataTable revertDataTable(String strJson)
        {
            DataTable tblRet = null;

            strJson = CSTR.trim(strJson);
            if (strJson.Length <= 0)
            {
                return(null);
            }

            try
            {
                JavaScriptSerializer json = new JavaScriptSerializer();
                json.MaxJsonLength = Int32.MaxValue;//设置JSON串的最大值

                //解析json字符串
                Dictionary <String, Object> tblMap = json.Deserialize <Dictionary <String, Object> >(strJson);
                if (CSTR.IsDictionaryEmpty(tblMap))
                {
                    return(null);
                }

                //必须使用ArrayList,当用List<String>时返回为null(原因不明)
                ArrayList columnList = tblMap["column"] as ArrayList;
                if (CSTR.IsListEmpty(columnList))
                {
                    return(null);
                }

                ArrayList rowList = tblMap["data"] as ArrayList;
                if (CSTR.IsListEmpty(rowList))
                {
                    return(null);
                }

                //重建DataTable
                tblRet = new DataTable();
                //重建column
                foreach (String column in columnList)
                {
                    tblRet.Columns.Add(column);
                }

                //填充数据
                int nCloumnCount = columnList.Count;
                foreach (ArrayList list in rowList)
                {
                    DataRow newRow = tblRet.NewRow();
                    for (int i = 0; i < nCloumnCount; i++)
                    {
                        newRow[i] = list[i];
                    }
                    tblRet.Rows.Add(newRow);//循环添加行
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
                tblRet = null;
            }

            return(tblRet);
        }