namespace Swt.Web.Public
{
/// <summary>
/// 单例模式基类 by LH
/// </summary>
public class swtSingleTon<T> where T : class,new()
{
private static volatile T _instance;
private static readonly object _lock = new object();
/// <summary>
///
/// </summary>
/// <returns></returns>
public static T Instance()
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new T();
}
}
}
return _instance;
}
}
}
using System;
using Newtonsoft.Json;
namespace Swt.Web.Public
{
/// <summary>
/// json 转 实体类 by LH
/// </summary>
public class swtJson2Obj<T>
{
/// <summary>
/// 转换
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static T Convert(string json)
{
T obj = JsonConvert.DeserializeObject<T>(json);
return obj;
}
}
}
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
using System.Web;
using System.Configuration;
using System.Text.RegularExpressions;
using System.Web.Caching;
using System.Collections;
using Microsoft.JScript;
using System.Data;
using System.Text;
using Newtonsoft.Json;
namespace Swt.Web.Public
{
/// <summary>
/// 自定义公共类用于MVC使用 by LH
/// </summary>
public class swtWebPageHelper : swtSingleTon<swtWebPageHelper>
{
#region--------------------------------获取路由信息--------------------------------
/// <summary>
/// 获取控制器 获取失败为 空字符
/// </summary>
/// <returns></returns>
public string GetRouteController()
{
try
{
return HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
}
catch (Exception e)
{
string result = e.Message;
result = "";
return result;
}
}
/// <summary>
/// 获取控制器 下面的 action 获取失败为 空字符
/// </summary>
/// <returns></returns>
public string GetRouteAction()
{
try
{
return HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString();
}
catch (Exception e)
{
string result = e.Message;
result = "";
return result;
}
}
/// <summary>
/// 获取url中的id,即FormId 获取失败为 空字符
/// </summary>
/// <returns></returns>
public string GetRouteId()
{
try
{
return HttpContext.Current.Request.RequestContext.RouteData.Values["id"].ToString();
}
catch (Exception e)
{
string result = e.Message;
result = "";
return result;
}
}
/// <summary>
/// 获取FormId,Ajax请求时的FormId需要特殊处理
/// </summary>
/// <returns>FormId</returns>
public string GetFormId()
{
string url = "";
if (HttpContext.Current.Request.UrlReferrer != null)//ajax请求时的页面url
{
url = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();//获取实际的URL信息
}
else//实际页面请求时的页面url
{
url = HttpContext.Current.Request.RawUrl.ToString();
}
string param = "";//查询参数
if (url.Contains("?"))
{
param = url.Substring(url.IndexOf("?"));
}
string PageUrl = url;//页面url
if (param != "")
{
PageUrl = url.Replace(param, "");
}
string FormId = "";//截取FormId
string[] PageUrlArr = PageUrl.Split('/');
int PageUrlArrLen = PageUrlArr.Length;
if (PageUrlArrLen > 5)
{
FormId = PageUrlArr[PageUrlArrLen - 1];//默认取最后一部分;
if (FormId == "")
{
FormId = PageUrlArr[PageUrlArrLen - 2];
}
}
FormId = FormId.Replace("#", "");// a 标签点击时部分浏览器会在url附加上 # 字符,导致最终得到的 FormId不正确,因此需要过滤掉
return FormId;
}
#endregion
#region--------------------------------生成 对应sql--------------------------------
/// <summary>
/// 生成分页语句(sql,行数,页码),如果使用了 easyui 的表格控件,只需要前台配置好列排序,使用该方法时会自动生成合适的排序sql
/// </summary>
/// <param name="sql">含rownumber计算行号函数字段的查询语句</param>
/// <param name="rows">行数</param>
/// <param name="page">页码</param>
/// <returns></returns>
public string GetPagingSql(string sql, int rows, int page)
{
if (page == 0)
{
page = 1;
}
int startrow = (page - 1) * rows + 1;
int endrow = rows * page == 0 ? 10 : rows * page;
if (GetEasyUiDataGridSort() != "" && GetEasyUiDataGridOrder() != "")//easyui表格排序
{
sql = sql.ToLower();
//以补位形式,长度暂时为50,去进行排序,使字符型和数字型的排序都能正确,另外也处理了日期型的字符串
//string rpStr = "select row_number() over(order by (replicate(0, 50-len(convert(varchar(50),{0}, 23))) + convert(varchar(50),{0}, 23)) {1}) as rownumber,";
string rpStr = "select row_number() over(order by {0} {1}) as rownumber,";
rpStr = string.Format(rpStr, GetEasyUiDataGridSort(), GetEasyUiDataGridOrder());
sql = Regex.Replace(
sql,
@"select row_number\(\) over\(order by \S+\) as rownumber,",
rpStr);
sql = Regex.Replace(
sql,
@"select row_number\(\) over\(order by \S+ \S+\) as rownumber,",
rpStr);
}
string newsql = "select * from (" + sql + ") as PagingSqlTb where rownumber between " + startrow + " and " + endrow;
return newsql;
}
/// <summary>
/// 生成查询总数的sql
/// </summary>
/// <param name="sql"></param>
/// <returns>生成查询总数的sql</returns>
public string GetCountSql(string sql)
{
return "select count(*) from(" + sql + ") as CountSqlTb";
}
/// <summary>
/// 生成汇总sql
/// </summary>
/// <param name="sql">原始的查询sql</param>
/// <param name="param">(需要汇总的字段)可变的方法参数</param>
/// <returns></returns>
public string GetSummarySql(string sql, params string[] param)
{
string SummarySql = "select";
for (int i = 0; i < param.Length; i++)
{
SummarySql += " " + "isnull(sum(" + param[i] + "),0) as " + param[i];
if (i <= param.Length - 2)
{
SummarySql += ", ";
}
if (i == param.Length - 1)//最后一个参数
{
SummarySql += " ";
}
}
return SummarySql + " from(" + sql + ") as SummarySqlTb";
}
/// <summary>
/// 生成带事务的sql
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public string GetTranSql(string sql)
{
string TranSql = @"
set xact_abort on
begin tran
{0}
if @@error<>0
begin
rollback tran
end
else
begin
commit tran
end
";
TranSql = string.Format(TranSql, sql);
return TranSql;
}
#endregion
#region--------------------------------设置相关信息--------------------------------
/// <summary>
/// 设置 cookies(键,值,毫秒)
/// </summary>
/// <param name="name">键</param>
/// <param name="value">值</param>
/// <param name="ms">毫秒</param>
public void SetCookies(string name, string value, double ms)
{
value = GlobalObject.encodeURIComponent(value);
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = DateTime.Now.AddMilliseconds(ms);
HttpContext.Current.Response.Cookies.Add(cookie);
}
/// <summary>
/// 设置session(键,值)
/// </summary>
/// <param name="name">键</param>
/// <param name="value">值</param>
public void SetSession(string name, string value)
{
HttpContext.Current.Session[name] = value;
}
/// <summary>
/// 设置session(键,值)
/// </summary>
/// <param name="name">键</param>
/// <param name="value">值</param>
public void SetSession(string name, object value)
{
HttpContext.Current.Session[name] = value;
}
/// <summary>
/// 通过委托实现类似js的回调函数
/// </summary>
/// <param name="DBID">DBID</param>
/// <returns></returns>
public delegate object GetData(string DBID);
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="CacheName">缓存名字</param>
/// <param name="s">缓存保持时间 秒</param>
/// <param name="DBID">DBID</param>
/// <param name="GetData">回调函数</param>
/// <returns>缓存</returns>
public object SetCache(string CacheName, int s, string DBID, GetData GetData)
{
Cache MyCache = HttpRuntime.Cache;
if (MyCache[CacheName] == null) //判断是否存在缓存
{
var data = GetData(DBID);
//设置缓存
MyCache.Add(
CacheName,
data,
null,
DateTime.Now.AddSeconds(s),//保持时间 秒
TimeSpan.Zero,
CacheItemPriority.Normal,
null);
}
return MyCache[CacheName];
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="CacheName"></param>
/// <param name="s"></param>
/// <param name="data"></param>
public void SetCache(string CacheName, int s, object data)
{
Cache MyCache = HttpRuntime.Cache;
if (MyCache[CacheName] == null) //判断是否存在缓存
{
MyCache.Add(
CacheName,
data,
null,
DateTime.Now.AddSeconds(s),//保持时间 秒
TimeSpan.Zero,
CacheItemPriority.Normal,
null);
}
}
#endregion
#region--------------------------------获取相关信息--------------------------------
/// <summary>
/// 获取配置文件 connectionStrings 信息
/// </summary>
/// <param name="name">connectionStrings 节点中的键</param>
/// <returns>相关值</returns>
public string GetConnStrByWebConfig(string name)
{
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
/// <summary>
/// 获取配置文件 appSettings 信息
/// </summary>
/// <param name="name">appSettings 节点中的键</param>
/// <returns>相关值</returns>
public string GetAppSetByWebConfig(string name)
{
return ConfigurationManager.AppSettings[name].ToString();
}
/// <summary>
/// 获取session 获取失败为空字符串
/// </summary>
/// <param name="name">session名</param>
/// <returns>session值</returns>
public string GetSession(string name)
{
if (HttpContext.Current.Session[name] != null)
{
return HttpContext.Current.Session[name].ToString();
}
return "";
}
/// <summary>
/// 获取session 获取失败为null
/// </summary>
/// <param name="name"></param>
/// <param name="type"></param>
/// <returns></returns>
public object GetSession(string name, string type)
{
if (type == "CusObj")
{
return HttpContext.Current.Session[name];
}
return null;
}
/// <summary>
/// 获取 cookies 获取失败为空字符串
/// </summary>
/// <param name="name">cookies名</param>
/// <returns>cookies 值</returns>
public string GetCookies(string name)
{
string result = "";
if (HttpContext.Current.Request.Cookies[name] != null)
{
result = HttpContext.Current.Request.Cookies[name].Value;
result = GlobalObject.decodeURIComponent(result);
}
return result;
}
/// <summary>
/// 获取 post 参数 获取失败为空字符串
/// </summary>
/// <param name="name">参数名</param>
/// <returns>post 参数值</returns>
public string GetPostParam(string name)
{
if (HttpContext.Current.Request.Form[name] != null)
{
return HttpContext.Current.Request.Form[name];
}
return "";
}
/// <summary>
/// 获取 url 参数 获取失败为空字符串
/// </summary>
/// <param name="name">参数名</param>
/// <returns>url 参数值</returns>
public string GetUrlParam(string name)
{
if (HttpContext.Current.Request.QueryString[name] != null)
{
return HttpContext.Current.Request.QueryString[name];
}
return "";
}
/// <summary>
/// 获取自定义参数中的值 获取失败为空字符串
/// </summary>
/// <param name="name">键</param>
/// <param name="CusParamLst">类似url的查找参数的字符串</param>
/// <returns>值</returns>
public string GetCusParam(string name, string CusParamLst)
{
CusParamLst = CusParamLst.Replace("?", "");
string[] arr = CusParamLst.Split('&');
string result = "";
for (int i = 0; i < arr.Length; i++)
{
if (arr[i].Contains(name + "="))
{
result = arr[i].Replace(name + "=", "");
break;
}
}
return result;
}
/// <summary>
/// 获取 easyui 表格控件 页码 参数, 默认为 1
/// </summary>
/// <returns>页码</returns>
public int GetEasyUiDataGridPage()
{
string page = GetPostParam("page");
if (page == "")
{
page = "1";
}
return Int32.Parse(page);
}
/// <summary>
/// 获取 easyui 表格控件 行数 参数,默认为 10
/// </summary>
/// <returns>行数</returns>
public int GetEasyUiDataGridRows()
{
string rows = GetPostParam("rows");
if (rows == "")
{
rows = "10";
}
return Int32.Parse(rows);
}
/// <summary>
/// 获取 easyui 表格控件 排序字段, 默认为 ""
/// </summary>
/// <returns>排序字段</returns>
public string GetEasyUiDataGridSort()
{
return GetPostParam("sort");
}
/// <summary>
/// 获取 easyui 表格控件 排序规则,默认为 asc
/// </summary>
/// <returns>排序规则</returns>
public string GetEasyUiDataGridOrder()
{
return GetPostParam("order");
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="CacheName"></param>
/// <returns></returns>
public object GetCache(string CacheName)
{
Cache MyCache = HttpRuntime.Cache;
return MyCache[CacheName];
}
#endregion
#region--------------------------------清空相关信息--------------------------------
/// <summary>
/// 清空所有缓存
/// </summary>
public void ClearAllCache()
{
//清空所有缓存
Cache UserPowerCache = HttpRuntime.Cache;
IDictionaryEnumerator CacheEnum = UserPowerCache.GetEnumerator();
ArrayList al = new ArrayList();
while (CacheEnum.MoveNext())
{
al.Add(CacheEnum.Key);
}
foreach (string key in al)
{
UserPowerCache.Remove(key);
}
}
/// <summary>
/// 清空所有cookies
/// </summary>
public void ClearAllCookies()
{
string[] cookies = HttpContext.Current.Request.Cookies.AllKeys;
foreach (string name in cookies)
{
SetCookies(name, "", -1);
}
}
/// <summary>
/// 清空所有session
/// </summary>
public void ClearAllSession()
{
HttpContext.Current.Session.RemoveAll();
HttpContext.Current.Session.Abandon();
}
#endregion
#region-------------------------------- 验证码相关 --------------------------------
/// <summary>
/// 生成验证码
/// </summary>
/// <param name="length">指定验证码的长度</param>
/// <returns>验证码</returns>
public string CreateValidateCode(int length)
{
int[] randMembers = new int[length];
int[] validateNums = new int[length];
string validateNumberStr = "";
//生成起始序列值
int seekSeek = unchecked((int)DateTime.Now.Ticks);
Random seekRand = new Random(seekSeek);
int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
int[] seeks = new int[length];
for (int i = 0; i < length; i++)
{
beginSeek += 10000;
seeks[i] = beginSeek;
}
//生成随机数字
for (int i = 0; i < length; i++)
{
Random rand = new Random(seeks[i]);
int pownum = 1 * (int)Math.Pow(10, length);
randMembers[i] = rand.Next(pownum, Int32.MaxValue);
}
//抽取随机数字
for (int i = 0; i < length; i++)
{
string numStr = randMembers[i].ToString();
int numLength = numStr.Length;
Random rand = new Random();
int numPosition = rand.Next(0, numLength - 1);
validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
}
//生成验证码
for (int i = 0; i < length; i++)
{
validateNumberStr += validateNums[i].ToString();
}
return validateNumberStr;
}
/// <summary>
/// 创建验证码的图片
/// </summary>
/// <param name="ValidateCode">验证码</param>
/// <returns>二进制字节流</returns>
public byte[] CreateValidateGraphic(string ValidateCode)
{
Bitmap image = new Bitmap((int)Math.Ceiling(ValidateCode.Length * 12.0), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的干扰线
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(ValidateCode, font, brush, 3, 2);
//画图片的前景干扰点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
//保存图片数据
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
//输出图片流
return stream.ToArray();
}
finally
{
g.Dispose();
image.Dispose();
}
}
#endregion
#region-------------------------------- ***其它*** --------------------------------
/// <summary>
/// DataTable 转 Json(不进行unicode编码)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public string DataTable2Json(DataTable dt)
{
return DataTable2Json(dt, false, false);
}
/// <summary>
/// DataTable 转 Json
/// </summary>
/// <param name="dt"></param>
/// <param name="IsUnicode">是否进行unicode编码</param>
public string DataTable2Json(DataTable dt, bool IsUnicode)
{
return DataTable2Json(dt, IsUnicode, false);
}
/// <summary>
/// DataTable 转 Json
/// </summary>
/// <param name="dt"></param>
/// <param name="IsUnicode">是否进行unicode编码</param>
/// <param name="IsStandard">是否标准格式的json</param>
/// <returns></returns>
public string DataTable2Json(DataTable dt, bool IsUnicode, bool IsStandard)
{
int RowCount = dt.Rows.Count;//行数
int ColumnCount = dt.Columns.Count;//列数
StringBuilder RowStr = new StringBuilder();
for (int i = 0; i < RowCount; i++)
{
StringBuilder ColumnStr = new StringBuilder();
for (int j = 0; j < ColumnCount; j++)
{
ColumnStr.Append("\"");
ColumnStr.Append(dt.Columns[j]);
ColumnStr.Append("\":\"");
if (IsUnicode)
{
ColumnStr.Append(Str2Unicode(dt.Rows[i][j].ToString()));//unicode编码
}
else
{
ColumnStr.Append(dt.Rows[i][j].ToString());
}
ColumnStr.Append("\"");
if (j <= ColumnCount - 2)
{
ColumnStr.Append(",");
}
}
RowStr.Append("{");
RowStr.Append(ColumnStr);
RowStr.Append("}");
if (i <= RowCount - 2)
{
RowStr.Append(",");
}
}
if (IsStandard)
{
return "[" + RowStr + "]";
}
else
{
return "{\"total\":\"" + RowCount + "\",\"Row\":[" + RowStr + "]}";
}
}
/// <summary>
/// Json 转 DataTable
/// </summary>
/// <param name="json">json字符串</param>
/// <returns></returns>
public DataTable Json2DataTable(string json)
{
DataTable table = null;
if (json == "")
{
return table;
}
else
{
table = new DataTable();
Regex regex = new Regex("\"Id\":\"(.*?)\"", RegexOptions.IgnoreCase);
string str = regex.Match(json).Groups[1].Value;
JsonSerializerSettings settings = new JsonSerializerSettings();
json = json.Substring(json.IndexOf("["));
json = json.TrimEnd(new char[] { '}' });
return JsonConvert.DeserializeObject<DataTable>(json);
}
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="str">待加密的字符串</param>
/// <returns>MD5字符串</returns>
public string Str2MD5(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}
/// <summary>
/// 跳转到指定页面
/// </summary>
/// <param name="url">url</param>
public void Redirect(string url)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Redirect(url, false);
HttpContext.Current.Response.End();
}
/// <summary>
/// 生成键值对 字符串
/// </summary>
/// <param name="dt">DataTable(以第一行数据为准)</param>
/// <returns>{ key:value, key:value} 形式的字符串</returns>
public string GetKeyValueStr(DataTable dt)
{
string result = "{";
if (dt.Rows.Count != 0)
{
int DtColumnsCount = dt.Columns.Count;
for (int i = 0; i < DtColumnsCount; i++)//遍历列
{
result += "\"" + dt.Columns[i] + "\":\"" + dt.Rows[0][i].ToString() + "\"";
if (i != DtColumnsCount - 1)
{
result += ",";
}
}
}
result += "}";
return result;
}
/// <summary>
/// 去除小数后面多余的0 1.0100 --> 1.01
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string GetNumRemoveExcessZero(string str)
{
string[] result = str.Split('.');//拆分整数和小数部分
double flag;
if (double.TryParse(str, out flag) && result.Length == 2)//小数
{
return str.TrimEnd('0').TrimEnd('.');
}
else
{
return str;//非小数原样返回
}
}
/// <summary>
/// 生成二维表格字符串(数据源DataTable、表格和并列相关信息( , 号分隔)、表格和并列相关信息( , 号分隔)、大标题列表( , 号分隔)、列字段的标题列表、列字段的id列表、是否将表格的数字去掉多余的0)
/// </summary>
/// <param name="dt">数据源DataTable</param>
/// <param name="BigTitles">大标题列表( , 号分隔)</param>
/// <param name="FirstRowTitles">表格和并列相关信息( , 号分隔)</param>
/// <param name="FirstRowColspans">表格和并列相关信( , 号分隔)</param>
/// <param name="ColTitles">列字段的标题列表( , 号分隔)</param>
/// <param name="ColFields">列字段的id列表( , 号分隔)</param>
/// <param name="IsRemoveExcessZero">是否将表格的数字去掉多余的0</param>
/// <returns>Table格式的字符串</returns>
public string GetTableStr(DataTable dt, string BigTitles, string FirstRowTitles, string FirstRowColspans, string ColTitles, string ColFields, bool IsRemoveExcessZero)
{
string[] BigTitlesArr = BigTitles.TrimEnd(',').Split(',');//大标题
string[] FirstRowTitlesArr = FirstRowTitles.TrimEnd(',').Split(',');//表格和并列相关信息
string[] FirstRowColspansArr = FirstRowColspans.TrimEnd(',').Split(',');
string[] ColTitlesArr = ColTitles.TrimEnd(',').Split(',');//表格列字段的标题
string[] ColFieldsArr = ColFields.TrimEnd(',').Split(',');//表格列字段的id
StringBuilder result = new StringBuilder();
result.Append("<table border=1 cellspan=0 cellpading=0>");
//生成标题
for (int i = 0; i < BigTitlesArr.Length; i++)
{
if (i == 0)
{
result.Append("<tr style='text-align:center;'>");
result.Append("<td colspan='" + ColTitlesArr.Length + "'><h2>" + BigTitlesArr[i] + "</h2></td>");//大标题
}
else
{
result.Append("<tr style='text-align:left;'>");
result.Append("<td colspan='" + ColTitlesArr.Length + "'><h4>" + BigTitlesArr[i] + "</h4></td>");//小标题
}
result.Append("</tr>");
}
//生成表头
//合并列表头信息
if (FirstRowTitles != "" && FirstRowColspans != "" && FirstRowTitlesArr.Length == FirstRowColspansArr.Length)
{
result.Append("<tr>");
for (int i = 0; i < FirstRowTitlesArr.Length; i++)
{
result.Append("<td style='width:80px;height:50px;text-align:center;' colspan='" + FirstRowColspansArr[i] + "'>" + FirstRowTitlesArr[i] + "</td>");
}
result.Append("</tr>");
}
//非合并列表头信息
result.Append("<tr>");
for (int i = 0; i < ColTitlesArr.Length; i++)
{
result.Append("<td style='width:80px;height:50px;text-align:center;'>" + ColTitlesArr[i] + "</td>");
}
result.Append("</tr>");
//生成表内容
for (int i = 0; i < dt.Rows.Count; i++)
{
result.Append("<tr style='text-align:center;'>");
for (int n = 0; n < ColFieldsArr.Length; n++)
{
if (IsRemoveExcessZero)
{
result.Append("<td>" + GetNumRemoveExcessZero(dt.Rows[i][ColFieldsArr[n]].ToString()) + "</td>");
}
else
{
result.Append("<td>" + dt.Rows[i][ColFieldsArr[n]].ToString() + "</td>");
}
}
result.Append("</tr>");
}
result.Append("</table>");
return result.ToString();
}
/// <summary>
/// str 转 unicode
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string Str2Unicode(string str)
{
StringBuilder result = new StringBuilder();
if (!string.IsNullOrEmpty(str))
{
for (int i = 0; i < str.Length; i++)
{
result.Append("\\u");
string tmp = ((int)str[i]).ToString("x");
string zerotmp = "";
for (int j = 0; j < 4 - tmp.Length; j++)
{
zerotmp += "0";//不够4位需要补0
}
result.Append(zerotmp + tmp);
}
}
return result.ToString();
}
/// <summary>
/// unicode 转 str
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string Unicode2Str(string str)
{
return System.Text.RegularExpressions.Regex.Unescape(str);
}
/// <summary>
/// 将Json序列化的时间由 /Date(1304931520336+0800)/ 转为字符串
/// </summary>
private string Tmp_JsonDate2Str(Match m)
{
string result = string.Empty;
DateTime dt = new DateTime(1970, 1, 1);
dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value) - 1000 * 60 * 60 * 8);
dt = dt.ToLocalTime();
result = dt.ToString("yyyy-MM-dd HH:mm:ss");
return result;
}
/// <summary>
/// 将Json序列化的时间由 /Date(1304931520336+0800)/ 转为字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string JsonDate2Str(string str)
{
MatchEvaluator mer = new MatchEvaluator(Tmp_JsonDate2Str);
Regex reg = new Regex(@"\\/Date\((\d+)\)\\/");
return reg.Replace(str, mer);
}
#endregion
}
}