使用Fluorine实现Flash分页显示

Fluorine的帮助文件介绍了怎样使用Fluorine实现Flash分页显示,但数据库是MySQL,若是Access怎么办?Luar介绍过一种方法,但难以理解。本文以Fluorine为例,介绍一种简单方法来实现Flash分页显示。

Flash Remoting的pageable recordset技术简单地说,就是利用Flash Remoting在Flash中实现数据集的分页显示。其中ColdFusion和J2EE Flash Remoting的功能最强。它们能实现边拖动List类组件边载入数据的功能,开源的Flash Remoting目前还做不到这一点。Fluorine的pageable recordset技术和Amfphp的类似,它的帮助文件有简单介绍。但该实例使用的数据库是MySQL,若是Access怎么办?Luar在他的Flash MX 2004……一书中利用Abode的.NET Flash Remoting实现了Flash分页显示。不过他介绍的Top算法很多人都难以理解,而且还需要在Flash中对最后一页作额外处理,有些麻烦。我这里介绍一种简单的方法。

我是通过OleDbDataAdapter对象Fill方法实现的。代码如下:

using System; 
using System.Collections; 
using System.Data; 
using System.Data.OleDb; 
using System.Web.UI.WebControls; 
using com.TheSilentGroup.Fluorine; 
namespace remoting 
{ 
    [RemotingService()] 
    public class PageableRS 
    { 
        private string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Exam.mdb"; 
        private string sqlStr; 
        public DataTable getRecord(int offset, int limit) 
        { 
            sqlStr = "Select StudentID,Name,Gender,Birthday FROM Student"; 
            OleDbConnection con = new OleDbConnection(); 
            con.ConnectionString = conStr; 
            OleDbDataAdapter da = new OleDbDataAdapter(sqlStr, con); 
            DataSet ds = new DataSet(); 
            da.Fill(ds, offset, limit, "Student"); 
            con.Close(); 
            return ds.Tables["Student"]; 
        } 
        public int getRecordCount() 
        { 
            string sqlStr = "Select count(ID) FROM Student"; 
            OleDbConnection con = new OleDbConnection(); 
            con.ConnectionString = conStr; 
            OleDbCommand cmd = new OleDbCommand(sqlStr, con); 
            con.Open(); 
            OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
            dr.Read(); 
            return dr.GetInt32(0); 
        } 
    } 
}

至于客户端代码我就不说了,想了解的请参考源文件点击此处要查看最后的效果。

下面的资源有助于理解pageable recordset:

发表评论