现在这方面技术主要有三种:
1: Ajaxpro.net 2: Atlas 3: MagicAjax
其中Atlas只能用于2.0下,另外两种适合于1.1 2.0 两种版本的都有。
下面的例子是在VS2003,.NET1.1下测试通过。
至于magicajax.dll的使用方法,我大至说一下:
1:当然先引入magicajax.dll
2:在 webconfig增加下面的配置:
<configSections>
<section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
</configSections>
<magicAjax outputCompareMode="HashCode" tracing="false" >
<pageStore mode="NoStore"
unloadStoredPage="false"
cacheTimeout="5"
maxConcurrentPages="5"
maxPagesLimitAlert="false" />
</magicAjax>
<system.web>
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>
。。。。。。
。。。。。省略
</system.web>
我们现在用一个repeater控件来做为一个显示数据的表格。还是先看页面的代码:
<%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">这是一个简单的用magicajax来实现无刷新分页的例子:(不足的地方,请大家见谅!)<br>
</FONT>
<ajax:ajaxpanel id="AjaxPanel1" runat="server">
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table id="table1" Width="100%" cellspacing="0" cellSpacing="1" border="1" bordercolor="Gainsboro">
<tr class="tr_head" align="Center" valign="Middle">
<td Width="48">id</td>
<td>text</td>
</tr>
</HeaderTemplate>
<AlternatingItemTemplate>
<tr align="Center" valign="Middle">
<td align="Left"><%# DataBinder.Eval(Container, "DataItem.id") %></td>
<td align="Left"><%# DataBinder.Eval(Container, "DataItem.text") %></td>
</tr>
</AlternatingItemTemplate>
<ItemTemplate>
<tr align="Center" valign="Middle">
<td align="Left"><%# DataBinder.Eval(Container, "DataItem.id") %></td>
<td align="Left"><%# DataBinder.Eval(Container, "DataItem.text") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</TABLE>
</FooterTemplate>
</asp:Repeater>
</ajax:ajaxpanel><ajax:ajaxpanel id="Ajaxpanel2" runat="server">
<TABLE cellSpacing="4" cellPadding="0" width="100%" border="0">
<TR>
<TD width="*"><SPAN id="pager1_l_page"><FONT color="red">
<asp:label id="nowpage" Runat="server" Visible="False" ForeColor="red" Width="0px"></asp:label></FONT>
<asp:label id="totalpage" Runat="server" Visible="False" Width="0px"></asp:label>
<asp:label id="totalrecord" Runat="server" Visible="False" Width="0px"></asp:label>
<asp:label id="L_page" runat="server"></asp:label></SPAN></TD>
<TD vAlign="middle" align="right" width="400">
<asp:linkbutton id="linkf" title="首页" runat="server" CssClass="btncol">首页</asp:linkbutton>
<asp:linkbutton id="Linkp" title="上一页" runat="server" CssClass="btncol">上一页</asp:linkbutton>
<asp:linkbutton id="Linkn" title="下一页" runat="server" CssClass="btncol">下一页</asp:linkbutton>
<asp:linkbutton id="Linkl" title="未页" runat="server" CssClass="btncol">未页</asp:linkbutton> 跳转:
<asp:textbox id="go1" Runat="server" Width="29px"></asp:textbox><asp:LinkButton id="Lgo" runat="server">GO</asp:LinkButton></TD>
</TR>
</TABLE>
</ajax:ajaxpanel></form>
</body>
</HTML>
上面的代码没有什么好讲的,想必大家看一下就都懂的。主要的是后台的代码:
Imports System.Data
Public Class WebForm1
Inherits System.Web.UI.Page
Dim connection As OleDbConnection
Const TNAME = "test"
Const dbname = "testmdb.mdb"
Protected WithEvents AjaxPanel1 As MagicAjax.UI.Controls.AjaxPanel
Protected WithEvents Repeater1 As System.Web.UI.WebControls.Repeater
Protected WithEvents nowpage As System.Web.UI.WebControls.Label
Protected WithEvents totalpage As System.Web.UI.WebControls.Label
Protected WithEvents totalrecord As System.Web.UI.WebControls.Label
Protected WithEvents L_page As System.Web.UI.WebControls.Label
Protected WithEvents linkf As System.Web.UI.WebControls.LinkButton
Protected WithEvents Linkp As System.Web.UI.WebControls.LinkButton
Protected WithEvents Linkn As System.Web.UI.WebControls.LinkButton
Protected WithEvents Linkl As System.Web.UI.WebControls.LinkButton
Protected WithEvents go1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Lgo As System.Web.UI.WebControls.LinkButton
Protected WithEvents Ajaxpanel2 As MagicAjax.UI.Controls.AjaxPanel
Dim _PageCount As Integer
Dim _TotalCount As Integer
Web 窗体设计器生成的代码
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
BindRepeater(5, 1)
nowpage.Text = 1
pageset()
End Sub
有关数据库连接与操作
翻页
End Class
我是用PageDateSource来做为数据源,呵原因当然是这个更方便应用于无刷新的分页。
文章的主要思想:是用session来存储显示的页面。用PageDateSource来做为数据源