• 技术文章 >web前端 >js教程

    Asp.net下使用Jquery Ajax传送和接收DataTable的代码_jquery

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



















    后台代码:
    ///
    复制代码 代码如下:

    /// 页面加载时
    ///

    ///
    ///
    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(json);
    //序列化DataTable为JSON
    string back = Dtb2Json(newdtb);
    Response.Write(back);
    Response.End();
    }
    ///
    /// DataTable转Json
    ///

    ///
    ///
    private string Dtb2Json(DataTable dtb)
    {
    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(drow);
    }
    return jss.Serialize(dic);
    }
    ///
    /// Json转DataTable
    ///

    ///
    ///
    private DataTable Json2Dtb(string json)
    {
    JavaScriptSerializer jss = new JavaScriptSerializer();
    ArrayList dic = jss.Deserialize(json);
    DataTable dtb = new DataTable();
    if (dic.Count > 0)
    {
    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(row);
    }
    }
    return dtb;
    }

    再附一个下载文件,觉得有用的可以下载看看
    json.zip
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Jquery Ajax DataTable
    上一篇:基于jquery的页面划词搜索JS_jquery 下一篇:基于Jquery的实现回车键Enter切换焦点_jquery
    Web大前端开发直播班

    相关文章推荐

    • 聊聊Angular中组件之间怎么通信• Angular如何对请求进行拦截封装?• react如何实现hooks?必须依赖 Fiber 么?• ie8是否支持es6• 浅析Angular中怎么用 Api 代理

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网