来自 新葡亰服务器 2019-11-27 16:48 的文章
当前位置: 澳门新葡亰app > 新葡亰服务器 > 正文

服务器再把GridView反构产生DataTable

服务器再把GridView反构造成DataTable, 再给DataTable增加一行之后,绑定到GridView,然后发回客户端... 能不能简单一点呢? 在使用Ajax数据请求数据,通常都是简单格式,比如String,信息量较少。当然也可以请求回XML,但是XML数据冗余多,取到客户端处理比json麻烦的多。 能不能简单一点呢? 上面这些问题,如果DataTable与JSON类型可以方便的相互转换,都可以迎刃而解了。 优点:1)避免不必要的回传; 2)精简异步请求数据的大小 ; 3)解决数据量较大时,数据发送与接收繁琐的问题。 既然好处这么多,我们上代码吧。 前台代码: 复制代码 代码如下:

上一篇博客写到用javascript生成多组文本,可以让数据的输入不受显示,现在我们需要把这些输入写入数据库,这里就用到json传入。 首先,我们来写一下后台如何生成要传输的数据 [html] 复制代码 代码如下: function generateDtb() { //写入 var txtName = document.getElementById.value; //创建数组 var dtb = new Array(); //通过循环把数据写入到数组并返回 for (var i = 0; i < firstGroup.length; i++) { var row = new Object(); row.Name = txtName; row.fullMoney = firstGroup[i].value; row.discount = secondGroup[i].value; dtb.push; } return dtb; } function generateDtb() { //写入 var txtName = document.getElementById.value; //创建数组 var dtb = new Array(); //通过循环把数据写入到数组并返回 for (var i = 0; i < firstGroup.length; i++) { var row = new Object(); row.Name = txtName; row.fullMoney = firstGroup[i].value; row.discount = secondGroup[i].value; dtb.push; } return dtb; } 把数组转换成json串传入到后台: [html] 复制代码 代码如下: $ { //点击botton1 $.click { var url = "DiscountManger.aspx?ajax=1"; var dtb = generateDtb(); // var strName = document.getElementById.value; if { } else { //序列化对象 var postdata = JSON.stringify; //异步请求 $.post(url, { json: postdata }, function { jBox.tip; location.reload(); } else { jBox.tip; location.reload; }); $ { //点击botton1 $.click { var url = "DiscountManger.aspx?ajax=1"; var dtb = generateDtb(); // var strName = document.getElementById.value; if { } else { //序列化对象 var postdata = JSON.stringify; //异步请求 $.post(url, { json: postdata }, function { jBox.tip; location.reload(); } else { jBox.tip; location.reload; }); 在后台的操作: 首先判断是否需要传输数据 [html] 复制代码 代码如下: if { //判断是否异步请求 if (Request.QueryString["ajax"] == "1") { ProcessRequest { //判断是否异步请求 if (Request.QueryString["ajax"] == "1") { ProcessRequest(); } 在这里进行对数据的处理: [html] 复制代码 代码如下: /// /// 处理异步请求 /// private void ProcessRequest() { //存入要填写的策略 ArrayList arrDiscount = new ArrayList(); Response.ContentType = "text/html"; string json = Request.Form["json"]; //反序列化DataTable if { return; } else { DataTable newdtb = Json2Dtb; for (int i = 0; i < newdtb.Rows.Count; i++) { Entity.StrategyDiscount enStrategyDiscount = new Entity.StrategyDiscount(); //打折方案名 enStrategyDiscount.name = newdtb.Rows[i]["Name"].ToString(); //商店ID enStrategyDiscount.shopId = long.Parse; enStrategyDiscount.fullMoney = Convert.ToDecimal(newdtb.Rows[i]["fullMoney"].ToString; enStrategyDiscount.discount = Convert.ToDecimal(newdtb.Rows[i]["discount"].ToString; //写入数据到数组 arrDiscount.Add; } //写入数据到数据库 IStrategyBLL strategy = new StrategyBLL(); if (strategy.AddStrategyDiscount { Response.Write; Response.End(); } else { Response.Write; Response.End(); } } /// /// 处理异步请求 /// private void ProcessRequest() { //存入要填写的策略 ArrayList arrDiscount = new ArrayList(); Response.ContentType = "text/html"; string json = Request.Form["json"]; //反序列化DataTable if { return; } else { DataTable newdtb = Json2Dtb; for (int i = 0; i < newdtb.Rows.Count; i++) { Entity.StrategyDiscount enStrategyDiscount = new Entity.StrategyDiscount(); //打折方案名 enStrategyDiscount.name = newdtb.Rows[i]["Name"].ToString(); //商店ID enStrategyDiscount.shopId = long.Parse; enStrategyDiscount.fullMoney = Convert.ToDecimal(newdtb.Rows[i]["fullMoney"].ToString; enStrategyDiscount.discount = Convert.ToDecimal(newdtb.Rows[i]["discount"].ToString; //写入数据到数组 arrDiscount.Add; } //写入数据到数据库 IStrategyBLL strategy = new StrategyBLL(); if (strategy.AddStrategyDiscount { Response.Write; Response.End(); } else { Response.Write; Response.End(); } } 这里,我们需要把json转换成datatable [html] 复制代码 代码如下: /// /// Json转DataTable /// /// /// private DataTable Json2Dtb { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = jss.Deserialize; DataTable dtb = new DataTable { foreach (Dictionary 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; } } return dtb; } /// /// Json转DataTable /// /// /// private DataTable Json2Dtb { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = jss.Deserialize; DataTable dtb = new DataTable { foreach (Dictionary 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; } } return dtb; } 这样,就可以把数据无刷新的写入到数据库。 当然,如果我们有一个从数据库读取的datatable,如果通过json显示在前台呢。 首先,我们需要把datatable转换为json数据 [html] 复制代码 代码如下: /// /// DataTable转Json /// /// /// private string Dtb2Json { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = new ArrayList(); foreach (DataRow row in dtb.Rows) { Dictionary drow = new Dictionary(); foreach (DataColumn col in dtb.Columns) { drow.Add(col.ColumnName, row[col.ColumnName]); } dic.Add; } return jss.Serialize; } /// /// DataTable转Json /// /// /// private string Dtb2Json { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = new ArrayList(); foreach (DataRow row in dtb.Rows) { Dictionary drow = new Dictionary(); foreach (DataColumn col in dtb.Columns) { drow.Add(col.ColumnName, row[col.ColumnName]); } dic.Add; } return jss.Serialize; } 然后写回到前台 [html] 复制代码 代码如下: /// /// 处理异步请求 /// private void ProcessRequest() { Response.ContentType = "text/html"; string json = Request.Form["json"]; //反序列化DataTable DataTable newdtb = Json2Dtb; //序列化DataTable为JSON string back = Dtb2Json; Response.Write; } /// /// 处理异步请求 /// private void ProcessRequest() { Response.ContentType = "text/html"; string json = Request.Form["json"]; //反序列化DataTable DataTable newdtb = Json2Dtb; //序列化DataTable为JSON string back = Dtb2Json; Response.Write; } 在前台接受显示: [html] 复制代码 代码如下: $ { //点击botton1 $.click { createTable; //显示Json中的数据 function createTable { var table = $("

后台代码: /// 复制代码 代码如下: /// 页面加载时 /// /// /// protected void Page_Load(object sender, EventArgs e) { //判断是否异步请求 if (Request.QueryString["ajax"] == "1") { ProcessRequest(); } } /// /// 处理异步请求 /// private void ProcessRequest() { Response.ContentType = "text/html"; string json = Request.Form["json"]; //反序列化DataTable DataTable newdtb = Json2Dtb; //序列化DataTable为JSON string back = Dtb2Json; Response.Write; } /// /// DataTable转Json /// /// /// private string Dtb2Json { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = new ArrayList(); foreach (DataRow row in dtb.Rows) { Dictionary drow = new Dictionary(); foreach (DataColumn col in dtb.Columns) { drow.Add(col.ColumnName, row[col.ColumnName]); } dic.Add; } return jss.Serialize; } /// /// Json转DataTable /// /// /// private DataTable Json2Dtb { JavaScriptSerializer jss = new JavaScriptSerializer(); ArrayList dic = jss.Deserialize; DataTable dtb = new DataTable { foreach (Dictionary 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; } } return dtb; } 再附一个下载文件,觉得有用的可以下载看看 json.zip

"); for (var i = 0; i < json.length; i++) { o1 = json[i]; var row = $; for { var td = $; td.text; td.appendTo; } row.appendTo; } table.appendTo; } $ { //点击botton1 $.click { createTable; //显示Json中的数据 function createTable { var table = $("

"); for (var i = 0; i < json.length; i++) { o1 = json[i]; var row = $; for { var td = $; td.text; td.appendTo; } row.appendTo; } table.appendTo; } 这样,就完成了json向后台传输数据和显示后台数据了,当然,这种传输方式只是传输的一种,如果是简单的字符串也可以用get和post进行传输,但是,javascript本身具有不安全性和不稳定行,对于一些比较重要的数据,建议还是寻找一些更可靠的方法。

本文由澳门新葡亰app发布于新葡亰服务器,转载请注明出处:服务器再把GridView反构产生DataTable

关键词: