通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据;然后利用jQuery内置的AJAX功能直接获得JSON格式的数据;在客户端直接绑定到数据控件里面,从而达到最优。
1.设计htm页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>test2</title>

 <script language="javascript" type="text/javascript" src="js/jquery-latest.pack.js"></script>

 <script language="javascript" type="text/javascript" src="js/PageDate.js"></script>

</head>
<body>
 <div>
  <div>
   <br />
   <input ).val(msg);
            }
        });
    }

 //改变翻页按钮状态   
    function ChangeState(state1,state2)
    {
        if(state1 == 1)
        {           
            document.getElementById("first").disabled = "";
            document.getElementById("previous").disabled = "";
        }
        else if(state1 == 0)
        {           
            document.getElementById("first").disabled = "disabled";
            document.getElementById("previous").disabled = "disabled";
        }
        if(state2 == 1)
        {
            document.getElementById("next").disabled = "";
            document.getElementById("last").disabled = "";
        }
        else if(state2 == 0)
        {
            document.getElementById("next").disabled = "disabled";
            document.getElementById("last").disabled = "disabled";
        }
    }

3.利用JSON三方控件在服务器端获取JSON格式数据
    

<%@ WebHandler Language="C#" Class="jQueryJSON.Handler" %>

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Data.SqlClient;
using System.Text;
using System.Xml;
using NetServ.Net.Json;

namespace jQueryJSON
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/json/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Handler : IHttpHandler
    {
        readonly int PageSize = int.Parse(ConfigurationManager.AppSettings["PageSize"]);
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //不让浏览器缓存
            context.Response.Buffer = true;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "");
            context.Response.CacheControl = "no-cache";

            string result = "";
            if (context.Request.Params["getPageCount"] != null) result = GetPageCount();
            if (context.Request.Params["pageIndex"] != null)
            {
                string pageindex = context.Request.Params["pageIndex"];
                //if (context.Cache.Get(pageindex) != null)
                //    result = context.Cache.Get(pageindex).ToString();
                //else
                //{
                //    result = GetPageData(context.Request.Params["pageIndex"]);
                //    context.Cache.Add(
                //        pageindex,
                //        result,
                //        null,
                //        DateTime.Now.AddMinutes(1),
                //        System.Web.Caching.Cache.NoSlidingExpiration,
                //        System.Web.Caching.CacheItemPriority.Default,
                //        null);
                //}
                result = GetPageData(context.Request.Params["pageIndex"]);
            }
            context.Response.Write(result);
        }

        private string GetPageData(string p)
        {
            int PageIndex = int.Parse(p);
            string sql;
            if (PageIndex == 1)
                sql = "select top " + PageSize.ToString() + " * from Orders order by OrderID desc";
            else
                sql = "select top " + PageSize.ToString() + " * from Orders where OrderID not in(select top " + ((PageIndex - 1) * PageSize).ToString() + " OrderID from Orders order by OrderID desc) order by OrderID desc";
            string dbfile = ConfigurationManager.ConnectionStrings["conn"].ToString();
            SqlConnection conn = new SqlConnection(dbfile);
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataTable dt = new DataTable("table");
            da.Fill(dt);
            return DataTableJson(dt);

        }

        private string GetPageCount()
        {
            string dbfile = ConfigurationManager.ConnectionStrings["conn"].ToString();
            SqlConnection conn = new SqlConnection(dbfile);
            SqlCommand cmd = new SqlCommand("select count(*) from Orders", conn);
            conn.Open();
            int rowcount = Convert.ToInt32(cmd.ExecuteScalar());
            conn.Close();
            return ((rowcount + PageSize - 1) / PageSize).ToString();
        }

        private string DataTable2Json(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("{\"");
            jsonBuilder.Append(dt.TableName);
            jsonBuilder.Append("\":[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }

        private string DataTableJson(DataTable dt)
        {
            JsonWriter writer = new JsonWriter();
            JsonObject content = new JsonObject();
            JsonArray Orders = new JsonArray();
            JsonObject Order;
            JsonObject OrderItem = new JsonObject();
           
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Order = new JsonObject();
                for(int j =0;j<dt.Columns.Count;j++)
                {       
                    Order.Add(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString());
                }
                Orders.Add(Order); 
            } 
            content.Add(dt.TableName, Orders);
            content.Write(writer);

            writer = new IndentedJsonWriter();
            content.Write(writer);
           
            return writer.ToString();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


运行效果如下:
jQuery、JSON超强组合 

服务器端返回JSON数据格式:
jQuery、JSON超强组合 

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2022-02-11
  • 2022-12-23
  • 2021-12-26
  • 2022-02-20
  • 2021-05-23
猜你喜欢
  • 2022-03-08
  • 2022-03-01
  • 2022-12-23
  • 2022-01-29
  • 2021-06-07
相关资源
相似解决方案