ASP.NET AJAX Call Web Service , Return JSON Format String
最近同事问用ASP.NET AJAX Call Web Service可以返回DataTable吗?现在公司项目的后台很多都直用AJAX作掉,达到异步的效果,目前公司的作法是用Web Service回传一个 List 到前端给JavaScript作Parse,Parse过程花调许多程序与性能,所以问题来了,如果能直接返回DataTable该有多好啊!? 最近同事问用ASP.NET AJAX Call Web Service可以返回DataTable吗? 现在公司项目的后台很多都直用AJAX作掉,达到异步的效果, 目前公司的作法是用Web Service回传一个 List 到前端给JavaScript作Parse, Parse过程花调许多程序与性能,所以问题来了,如果能直接返回DataTable该有多好啊!? 是的,要回传DataTable其实是可行的,使用ASP.NET 2.0 AJAX Futures 的确有方法可以作到, 只不过,该Solution目前还是CTP,且满久了,不知何时才会发布正式版,还是石沉大海了? 后来我提出了一个解决方案,也可以达到"感觉像"返回一个DataTable,那就是使用JSON, 这里使用一个C# Class来作解析,可直接传入DataTable到这个类里的Method当参数, 该Method会教这个DataTable提炼成JSON的Format String,所以该Web Service回传类型是一个String Type,
C# Class (DT2JSON) 如下: 001 using ...System.Data;002 using System.Text; 003 004 public class DT2JSON 005 ...{ 006 ????///// 007 ????/// 将DataTable转换成JSON格式字符串 (不可指定查询字段) 008 ????/// JavaScript使用方式:OBJ.Table[0].Row[0].Cell[0].Data 009 ????/// 010 ????/// DataTable 011 ????/// 012 ????public static string JSON_DataTable(DataTable dt) 013 ????...{ 014 ????????StringBuilder JsonString = new StringBuilder(); 015 ????????JsonString.Append("...{ ""); 016 ????????JsonString.Append(""Table":[...{ " 043 ????????JsonString.Append("]}]}); 044 ????????return JsonString.ToString(); 045 ????}); 017 ????????JsonString.Append(""Row":[ "); 018 ????????for (int i = 0; i < dt.Rows.Count; i++) 019 ????????...{ 020 ????????????JsonString.Append("...{ " 038 ????????????else 039 ????????????...{ 040 ????????????????JsonString.Append("]}); 041 ????????????},"); 021 ????????????JsonString.Append(""Cell":[ "); 022 ????????????for (int j = 0; j < dt.Columns.Count; j++) 023 ????????????...{ 024 ????????????????if (j < dt.Columns.Count - 1) 025 ????????????????...{ 026 ????????????????????JsonString.Append("...{"," + ""Value":"" + dt.Rows[i][j].ToString() + ""}); 027 ????????????????} 028 ????????????????else if (j == dt.Columns.Count - 1) 029 ????????????????...{ 030 ????????????????????JsonString.Append("...{"" + ""Value":"" + dt.Rows[i][j].ToString() + ""}); 031 ????????????????} 032 ????????????} 033 034 ????????????if (i == dt.Rows.Count - 1) 035 ????????????...{ 036 ????????????????JsonString.Append("]}); 037 ????????????} " 042 ????????} 046 047 ????///// 048 ????/// 将DataTable转换成JSON格式字符串 (可指定查询字段) 049 ????/// JavaScript使用方式:OBJ.Data[0].Name 050 ????/// 051 ????/// DataTable 052 ????/// 053 ????public static string CreateJsonParameters(DataTable dt) 054 ????...{ 055 ????????StringBuilder JsonString = new StringBuilder(); 056 ????????if (dt != null && dt.Rows.Count > 0) 057 ????????...{ 058 ????????????JsonString.Append("...{ " 084 ????????????JsonString.Append("]}); 085 ????????????return JsonString.ToString(); 086 ????????}); 059 ????????????JsonString.Append(""Data":[ "); 060 ????????????for (int i = 0; i < dt.Rows.Count; i++) 061 ????????????...{ 062 ????????????????JsonString.Append("...{ " 079 ????????????????else 080 ????????????????...{ 081 ????????????????????JsonString.Append("}); 082 ????????????????},"); 063 ????????????????for (int j = 0; j < dt.Columns.Count; j++) 064 ????????????????...{ 065 ????????????????????if (j < dt.Columns.Count - 1) 066 ????????????????????...{ 067 ????????????????????????JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + "","); 068 ????????????????????} 069 ????????????????????else if (j == dt.Columns.Count - 1) 070 ????????????????????...{ 071 ????????????????????????JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + """); 072 ????????????????????} 073 ????????????????} 074 075 ????????????????if (i == dt.Rows.Count - 1) 076 ????????????????...{ 077 ????????????????????JsonString.Append("}); 078 ????????????????} " 083 ????????????}" 087 ????????else 088 ????????...{ 089 ????????????return null; 090 ????????} 091 ????} 092 093 ????///// 094 ????/// 将DataTable转换成JSON格式字符串 (可指定查询字段) 095 ????/// JavaScript使用方式:OBJ.[DataTable名称][0].Name 096 ????/// 097 ????/// DataTable名称 098 ????/// DataTable 099 ????/// 100 ????public static string CreateJsonParameters(string dtName,DataTable dt) 101 ????...{ 102 ????????StringBuilder JsonString = new StringBuilder(); 103 ????????if (dt != null && dt.Rows.Count > 0) 104 ????????...{ 105 ????????????JsonString.Append("...{ " 131 ????????????JsonString.Append("]}); 132 ????????????return JsonString.ToString(); 133 ????????}); 106 ????????????JsonString.AppendFormat(""...{0}":[ ",dtName.Trim()); 107 ????????????for (int i = 0; i < dt.Rows.Count; i++) 108 ????????????...{ 109 ????????????????JsonString.Append("...{ " 126 ????????????????else 127 ????????????????...{ 128 ????????????????????JsonString.Append("}); 129 ????????????????},"); 110 ????????????????for (int j = 0; j < dt.Columns.Count; j++) 111 ????????????????...{ 112 ????????????????????if (j < dt.Columns.Count - 1) 113 ????????????????????...{ 114 ????????????????????????JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + "","); 115 ????????????????????} 116 ????????????????????else if (j == dt.Columns.Count - 1) 117 ????????????????????...{ 118 ????????????????????????JsonString.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + """ + dt.Rows[i][j].ToString() + """); 119 ????????????????????} 120 ????????????????} 121 122 ????????????????if (i == dt.Rows.Count - 1) 123 ????????????????...{ 124 ????????????????????JsonString.Append("}); 125 ????????????????} " 130 ????????????}" 134 ????????else 135 ????????...{ 136 ????????????return null; 137 ????????} 138 ????} 139 } Web Service Method使用方式: 01 ????[WebMethod]02 ????public string GetDataTable() 03 ????...{ 04 ????????DataTable dt = new DataTable(); 05 06 ????????dt.Columns.Add(new DataColumn("Name",typeof(string))); 07 ????????dt.Columns.Add(new DataColumn("LastName",typeof(string))); 08 ????????dt.Columns.Add(new DataColumn("Email",typeof(string))); 09 10 ????????dt.Rows.Add("何","若瑄"," [email?protected]"); 11 ????????dt.Rows.Add("毛","俊杰"," [email?protected]"); 12 13 ????????return DT2JSON.JSON_DataTable(dt); 14 ????}
ASPX JavaScript 使用方式,这里是采jQuery的作法,JavaScript作法也差不多, 02 ???? 03 ???? 04 ????
就这样,简简单单就可以调用JSON的数据,网页间传递数据使用JSON真的挺方便的, 原文:大专栏 ?ASP.NET AJAX Call Web Service,Return JSON Format String (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Crystal Reports Images和ASP.Net MVC
- asp.net-mvc – 如何在asp.net mvc中的关系表/模型中包含Ap
- asp.net – 您使用什么工具来提高编码效率和整体效率
- asp.net – 无法将ValueProviderFactory添加到Web API
- ASP.NET Excel导出编码问题
- asp.net-mvc – ASP.NET MVC – 从单个控制器动作返回不同的
- asp.net-mvc-5 – OWIN是否调用MVC(ASP.NET MVC)?
- 一个ASP.NET应用程序(意外)在多个应用程序域或频繁的应用程
- 从wsdl文件更新asp.net WebService引用?
- asp.net-web-api – 当我使用IFormFile时缺少一个结束括号
- .net – 有没有办法在Crystal Reports中渲染LaTe
- asp.net – 将下拉列表的选定值传递给aspx中的参
- ASP.NET页面授权……你是怎么做到的?
- ASP.NET Webforms ASP.NET Ajax与ASP.NET MVC和A
- asp-classic – ConnectionTimeout无效
- asp.net-mvc – ASP.NET MVC&Windsor.Castle
- 【DevExpress v17.2新功能预告】DevExpress ASP.
- 如何使用共享群集上相同端口的子路径在Azure Ser
- 如何在asp.net的页面加载中调用javascript函数
- 在ASP.NET MVC中设置空响应的Content-Type