饮马流花河

倚楼听风雨,但看江湖路

jack wangID:thebesghost
233184次访问,排名271好友0人,关注者26
自由,不想有任何拘束
thebesghost的文章
原创 29 篇
翻译 0 篇
转载 489 篇
评论 145 篇
thebesghost的公告
最近评论
des05d:des05d
gtg09y
wow gold
wow gold
wow gold
rtytruyu9
syj2008wer9
wow gold
wow gold
wow gold<……
rtytruyu9:rtytruyu9
syj2008wer9
wow gold
wow gold
wow gold<……
czwzf005:czwzf005
czwzhufeng
wow gold
股票软件
螺杆泵
wtyttdf15 wyyuan1919
wow gold
wow gold
wow gold
收藏
相册
Google中国总部
动物世界(1)-- 西非大草原
李小龙
玩味软件
饮马流花河
IT综合性网站
Beareyes-小熊在线
Donews
InfoWorld(英文)
It168-IT主流资讯平台
Pconline-太平洋电脑网
Yesky-中文IT门户
Zdnet
Zol-中关村在线
赛迪网
常用网站
CSDN博客索引
del.icio.us
DIGLOG
google代码搜索
Krugle代码搜索
Mailkr博客
www.answers.com
中国财经参考&外电参考
佛山电台
北京跆拳道训练馆
嘻哈帮
在线闹钟
块客网
天天网摘
我是我
酷讯火车票
技术网站(网址,大型技术社区,论坛,blog)
51cto
51cto-中国最大的网络技术网站
51testing-软件测试网
artlife
asp.net资源
ASPCOOL-酷网动力
C#开源资源大全
Cnfan-网络技术网站
CodeGuru
CODEPLEX-微软官方开源社区
CodeProject
CSDN-中国程序员开发网
CSDN博客
CSDN技术网站黄页
csdn视频频道
GotDotNet
http://blog.ezse.com/
Java中文文档
Linux8-Linux吧
Linuxfans-中国linux公社
MSDN中文文档
MSDN中文版
MSDN杂志
Okajax-Ajax中国
sephiroth
sourceforge
weni闪客网
博客园
博客堂
微软中国技术社区
搜蛛
无忧脚本
精华blog
ALBERT
Chengking
D语言主题Blog
flash RIA开发—zhangyf
I_like_cpp
python大牛
TerryLee's Tech Space(RSS)
yourlin
在历史中瞻望未来,在文学中洞悉人性,在思考中寻求解脱
天道酬勤(RSS)
天道酬勤-csdnblog
山水天下
快乐的编程小爷
思归呓语
方言慧语
旁观者
星星点灯-flex博客
跬步致远
酒客
静心编程
精品网站
3g168
独乐乐不如众乐乐
团队与专栏
Design & Pattern团队
QT参考文档
win32多线程程序设计
WPF简介
中国开源软件推进联盟
微软设计模式专业培训
网上商城
Dearbook-第二书店
友情blog
beijinger
Danil Blog
flash 阶梯
honge
风驰电掣, miuo(RSS)
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 利用Ajax实现DataGrid无刷新分页(AjaxGrid)收藏

新一篇: 教育的选择题——有感于中美两国学生守则 | 旧一篇: 震撼!实拍中国一个高级工程师的家

利用Ajax实现DataGrid无刷新分页(AjaxGrid)

效果图

DataGrid功能强大,我们只用写几行代码就能够实现复杂的页面数据显示。数据多的时候免不了要分页显示,DataGrdi本身自带分页功能,但是当数据量少的时候很方便,当大数据量时,DataGrid得分页机制就不太好了。于是在网上找到了一种比较好的利用存储过程实现分页机制(客户端想要第几页就取第几页数据,上十万级的数据查询也很快,数据量再多的时候就没试过了,等有时间把利用存储过程分页也写在blog上)在工作中为了让客户用的更舒服点,也赶时髦,想利用Ajax来实现DataGrid无刷新分页。主要用RenderControl方法把DataGrid翻译成Html代码,然后用Web Service 返回。当然也可以用别的方法。

GenericAjaxWS.asmx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Configuration;
using System.Web.UI.WebControls;
using System.Web.UI;
using System.IO;

namespace GenricAjaxWS
{
      [WebService(Namespace="http://localhost/GenricAjaxWS/")]
      public class GenricAjaxWS : System.Web.Services.WebService
      {
            SqlConnection con;
            SqlDataAdapter da;
            SqlCommand cmd;
            DataSet ds;

            public GenricAjaxWS()
            {
              InitializeComponent();
              con= new SqlConnection(ConfigurationSettings.AppSettings["Connect"]);
              da=new SqlDataAdapter("",con);
              cmd=new SqlCommand("",con);
              ds=new DataSet("TahaSchema");
            }

            #region Component Designer generated code

            //Required by the Web Services Designer
            private IContainer components = null;

            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
            }

            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose( bool disposing )
            {
              if(disposing && components != null)
              {
                    components.Dispose();
              }
              base.Dispose(disposing);
            }
           
            #endregion
 
/// <summary>
/// this function accepts TSql statment and returns dataset
/// </summary>
 

            [WebMethod]
            public string getGrid(string sqlStr,int pageIndex)
            {
              da.SelectCommand.CommandText=sqlStr;
              da=new SqlDataAdapter(sqlStr,con);
              da.Fill(ds,"myTable");

              DataGrid dataGrid = new DataGrid();
              dataGrid.AutoGenerateColumns = true;
              dataGrid.DataSource = ds.Tables["myTable"].DefaultView;
              dataGrid.AllowPaging = true;
              dataGrid.PageSize = 4;
              dataGrid.PagerStyle.Visible = false;
              dataGrid.CurrentPageIndex = pageIndex;
              try
              {
                    dataGrid.DataBind();
              }
              catch(Exception)
              {

              }
              StringWriter wr = new StringWriter();
              HtmlTextWriter writer = new HtmlTextWriter(wr);
              dataGrid.RenderControl(writer);
              string gridHtml = wr.ToString();
              wr.Close();
              writer.Close();
              DropDownList ddl_Pager = new DropDownList();
              ddl_Pager.Attributes.Add("onchange","goToPage(this.value)");
              string pager="";
              for(int i=0;i<dataGrid.PageCount;i++)
              {
                ListItem lItem = new ListItem(i.ToString(),i.ToString());
                ddl_Pager.Items.Add(lItem);
                if(i==pageIndex)
                {
                  pager += "[background-color:#ffdd11;width" +
                         ":20px;align:center\"><a href=\"#\" onclick" +
                         "=\"goToPage('"+i+"')\">"+i+"</a>]";
                }
                else
                {
                  pager += "[width:20px;align:center\">" +
                         "<a href=\"#\" onclick=\"goToPage" +
                         "('"+i+"')\" >"+i+"</a>]";
                }
              }
              ddl_Pager.SelectedIndex = pageIndex;
              wr = new StringWriter();
              writer = new HtmlTextWriter(wr);
              ddl_Pager.RenderControl(writer);
              string pagerHtml = "<input type='button'" +
                                 " value='<' onclick='goToPrevPage()'>";
              pagerHtml += wr.ToString();
              pagerHtml += "<input type='button' value='>'" +
                           " onclick='this.disabled=goToNextPage()'>";
              wr.Close();
              writer.Close();
              return pager+pagerHtml+"<br>"+gridHtml;
            }
      }
}

上面的是Web服务,然后利用Ajax请求这个服务来获取要现实的数据。以下是客户端JavaScript代码:

AjaxFuncs.js


//声明异步请求对象

/////////////////////////////////////////////////////////////////
var xmlhttp;
/////////////////////////////////////////////////////////////////
//填充DataGrid,这个函数有3个参数。

//第一个是包含DataGrid的DIV的ID

//第二个是查询数据的sql语句

//第三个是要获取第几页数据


/////////////////////////////////////////////////////////////////
var ph;
var fillGrid_Str_SQL="";
var currentPageIndex ;
function fillGrid(myPH,str_Sql,pageIndex){
      ph = window.document.getElementById(myPH);
      fillGrid_Str_SQL = str_Sql;
      currentPageIndex = pageIndex;
      var url = "http://localhost/GenricAjaxWS/GenricAjaxWS" +
                ".asmx/getGrid?sqlStr="+str_Sql+
                "&pageIndex="+pageIndex;

      if(window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=fillGrid_Change;
        xmlhttp.open("GET",url,true);
        xmlhttp.send(null);
    }
    //code for IE
    else if (window.ActiveXObject)
        {
        try
            {
            xmlhttp= new ActiveXObject("Msxml2.XMLHTTP");
            }
        catch(e)
            {
            try
            {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){}
        }

        if(xmlhttp)
        {
            try
            {
            xmlhttp.onreadystatechange=fillGrid_Change;
            xmlhttp.open("GET",url,false);
            xmlhttp.send();
            }
            catch(e){}
        }
    }
}

function fillGrid_Change()
{
      if(xmlhttp.readyState==4&&xmlhttp.status==200)
      {
          //var rows=xmlhttp.responseXML.
          //        selectNodes(".//TahaSchema//TahaTable");
          var row =   xmlhttp.responseXML.selectNodes(".//");
          ph.innerHTML = row[1].text;
      }
}

function goToPage(pageIndex){
      fillGrid(ph.id,fillGrid_Str_SQL,pageIndex)
}
 
function goToNextPage(){
      try{ 
            fillGrid(ph.id,fillGrid_Str_SQL,
                     parseInt(currentPageIndex)+1);
            return false;
      }
      catch(e){
            return true;
      }
}

function goToPrevPage(){
      fillGrid(ph.id,fillGrid_Str_SQL,
               parseInt(currentPageIndex)-1)
}

最后就是显示数据的html页面,实例代码如下:

AjaxGrid.html:

<html>
  <head>
    <title>AjaxGrid</title>
  <script language="javascript"
        type="text/javascript" src="ajaxFuncs.js"></script>
  </head>
  <body  onload="fillGrid('myPH','select * from sales',1)">
           
    <form id="Form1" method="post" runat="server">
                        <div id="myPH" ></div>
     </form>
  </body>
</html>

到此利用Ajax实现DataGrid无刷新分页就完成了。

 来源:http://blog.csdn.net/soarheaven/archive/2006/09/24/1270120.aspx

发表于 @ 2006年09月26日 23:16:00|评论(loading...)|编辑

新一篇: 教育的选择题——有感于中美两国学生守则 | 旧一篇: 震撼!实拍中国一个高级工程师的家

评论

#http://item4sale.com 发表于2008-09-04 08:22:22  IP: 220.178.20.*
erwqeqt9
syj2008wer9
wow gold
wow gold
wow gold
wow gold
wow gold
item4sale
item4sale
item4sale
item4sale
item4sale
buy AoC gold
buy AoC gold
buy AoC gold
buy AoC gold
连锁加盟洗衣
连锁加盟洗衣
连锁洗衣加盟
连锁洗衣加盟
烫平机
烫平机
工业水洗机
工业水洗机
#xfsleep94 发表于2008-09-04 11:08:47  IP: 220.178.21.*
xfsleep94
9ha2ppy9
[url=http://www.mygamestock.com]wow gold[/url]
[url=http://itemrate.com]wow gold[/url]
[url=http://www.oforu.com]wow gold[/url]
[url=http://item4sale.com]wow gold[/url]
[url=http://www.mygamestock.com/PLindex.aspx]wow gold[/url]
[url=http://www.mygamestock.com/Cheap.009.Ever_Quest.aspx]wow gold[/url]
[url=http://www.mygamestock.com/Cheap.040.Hellgate_London.aspx]wow gold[/url]
[url=http://www.mygamestock.com/Power.019.World_of_Warcraft_-_EU.aspx]wow gold[/url]
[url=http://www.jdcf168.com.cn]股票软件[/url]
[url=http://www.jdcf168.com.cn/news/2008-03-21/390.htm]股票软件[/url]
[url=http://www.jdcf168.com.cn]大智慧[/url]
[url=http://www.jdcf168.com.cn/news/2008-03-25/403.htm]大智慧[/url]
[url=http://www.pumppump.cn]隔膜泵[/url]
[url=http://www.pumppump.cn/cpgmb_2.htm]隔膜泵[/url]
[url=http://www.jdcf168.com.cn]炒股软件[/url]
[url=http://www.jdcf168.com.cn/news/2008-05-04/1330.htm]炒股软件[/url]
[url=http://www.jdcf168.com.cn]黑马股推荐[/url]
[url=http://www.jdcf168.com.cn/news/2008-04-09/581.htm]黑马股推荐[/url]
[url=http://www.shqy88.com.cn]英语口语[/url]
[url=http://www.shqy88.com.cn/salon/tongyong.htm]英语口语[/url]
[url=http://stepg.cn]wow gold[/url]
[url=http://lexbery.com]wow gold[/url]
[url=http://lunbur.com]wow gold[/url]
[url=http://banber.net]wow gold[/url]
[url=http://tingur.net]wow gold[/url]
[url=http://lifeistravel.cn]wow gold[/url]
[url=http://lifeistour
发表评论  


登录
Csdn Blog version 3.1a
Copyright © thebesghost