Rumah pangkalan data tutorial mysql 用AjaxPro实现无刷新翻页效果及数据库分页技术介绍

用AjaxPro实现无刷新翻页效果及数据库分页技术介绍

Jun 07, 2016 pm 03:30 PM
penomboran segarkan semula capai teknologi Kesan pangkalan data Balik muka surat

在看本文之前,建议查看本人的系列文章: 《AjaxPro与服务器端交互过程中如何传值》:http://blog.csdn.net/zhoufoxcn/archive/2008/01/05/2026908.aspx 《用AjaxPro实现二级联动》:http://blog.csdn.net/zhoufoxcn/archive/2008/01/07/2029204.aspx 《用Aj

在看本文之前,建议查看本人的系列文章:
《AjaxPro与服务器端交互过程中如何传值》:http://blog.csdn.net/zhoufoxcn/archive/2008/01/05/2026908.aspx
《用AjaxPro实现二级联动》:http://blog.csdn.net/zhoufoxcn/archive/2008/01/07/2029204.aspx
《用AjaxPro实现定时刷新效果》:http://blog.csdn.net/zhoufoxcn/archive/2008/03/09/2160407.aspx
以便对AjaxPro有个初步印象。

 题外话:经不住一些朋友的一再要求,一气写了这么几篇Ajax方面的文章,这其中大部分代码都是从我的项目中摘取出来的,不过为了演示整个程序的框架结构,所以在演示程序代码里不会有大量与实际相关的业务逻辑处理,但是这并不妨碍你利用这些理论做出复杂的、完善的应用。

一、数据库分页理论
在实际项目中经常会遇到一个表里有几K、几M以上的数据,而呈现给用户时并不会一下子都显示出来,所以都是分批展示给用户,这样一来可以减小网络传输量,二来也减轻服务器压力。

通常在不同数据库中都有查询从第N条到第M条记录的方法(M>N>=0),不过其效率和性能都不太一样。假如有如下一个表:

DROP TABLE IF EXISTS `zhoufoxcn`.`userlist`;
CREATE TABLE  `zhoufoxcn`.`userlist` (
  `UserId` 
int(10) unsigned NOT NULL auto_increment,
  `UserName` 
varchar(45NOT NULL,
  `Age` 
int(10) unsigned NOT NULL default '10',
  `Sex` 
tinyint(3) unsigned NOT NULL default '1',
  `Tall` 
int(10) unsigned NOT NULL,
  `Salary` 
int(10) unsigned NOT NULL,
  
PRIMARY KEY  (`UserId`)
) ENGINE
=InnoDB AUTO_INCREMENT=694 DEFAULT CHARSET=utf8;

以上是我今天演示要用到的一个MySQL中的表,对于同样结构的表,查询从第N条到第M条记录的方法在MySQL中表示为:

select * from userlist  order by userId limit n,m

MS SQL Server:

select top (m-n) * from userList where userid not in
(
select top  n userid from userList  order by userid) order by userid

Oracle:

select * from (select rownum no,* from userlist where rownumm) where no>=n; 

另外,如果数据量小的话还可以直接用DbDataAdapter 的子类的实例的public int Fill (int startRecord,int maxRecords,params DataTable[] dataTables)方法。如果数据量大的话,可能会根据实际情况采用临时表或者缓存的办法,来获得更高性能。

二、程序代码:
前台页面:

@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxPager.aspx.cs" Inherits="AjaxPager" %>

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 runat="server">
    
title>AjaxPro翻页效果title>
    
style type="text/css">
tr.items
{        
    background-color
: #8FACC2;
    border-color
:#FFFFFF;
    line-height
:18px;
}
tr.table
{        /*表格内容*/
    background-color
: #F1F3F5;
    border-color
:#FFFFFF;
    line-height
:18px;
}
    
style>
head>
body onload="JumpPage(1)">
    
form id="form1" runat="server">
    
table border="0" cellpadding="1" cellspacing="1">
    
tr>td>和谐小区青年居民概况表td>tr>
    
tr>td>
    
div id="memberList">
    数据装载中,请等待.....
     
div>
     
td>tr>
     
tr>td>说明:本名单中不包括离退休人员、残疾智障人员和儿童。td>tr>
     
table>
    
form>
    
script language="javascript" type="text/javascript" defer="defer">
        
var pageSize=20;//假定每页显示20条数据
        function JumpPage(page)//完全服务器端分页处理方法
        {
            
var label=document.getElementById("memberList");
            label.innerHTML
=AjaxPager.GetString(parseInt(page),parseInt(pageSize)).value;
        }
        
/*
        function ShowPager()
        {
        }
        
        function JumpPageClient(page)
        {
            var label=document.getElementById("memberList");
            var data=AjaxPager.GetDataTable(parseInt(page),parseInt(pageSize)).value;
            if(data!=null)
            {
            alert(data.Rows.length);
            }
            label.innerHTML=data.Rows.length;
            
        }
        
*/
    
script>
body>
html>

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Caching;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using MySql.Data.MySqlClient;
using MySql.Data.Types;

/// 


/// 说明:本文介绍如何利用AjaxPro技术实现翻页时局部刷新,同时也介绍了翻页所涉及到的数据库知识(MySQL、MS SQL和Oracle)。
/// 本演示程序采用MySQL数据库,数据库中的数据是采用程序随机生成的。
/// 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/03/12/2174234.aspx
/// 作者:周公
/// 日期:2008-3-12
/// 
public partial class AjaxPager : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(
typeof(AjaxPager));
    }

    
/// 
    
/// 从数据库中指定位置读取指定数目的数据
    
/// 
    
/// 记录的起始页位置
    
/// 要读取的记录条数
    
/// 
    [AjaxPro.AjaxMethod]
    
public DataTable GetDataTable(int pageIndex, int size)
    {
        MySqlConnection connection 
= new MySqlConnection(ConfigurationManager.ConnectionStrings["MySql"].ConnectionString);
        MySqlDataAdapter adapter 
= new MySqlDataAdapter("select * from userlist limit " + (pageIndex-1* size + "," + size, connection);
        DataTable data 
= new DataTable();
        adapter.Fill(data);
        connection.Close();
        adapter.Dispose();
        
return data;
    }
    
/// 
    
/// 传递div节点的html字符串
    
/// 
    
/// 记录的起始页位置
    
/// 要读取的记录条数
    
/// 
    [AjaxPro.AjaxMethod]
    
public string GetString(int pageIndex, int size)
    {
        StringBuilder text 
= new StringBuilder();
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        text.Append(
"");
        DataTable source 
= GetDataTable(pageIndex,size);
        DataRow row;
        
for (int i = 0; i  source.Rows.Count; i++)
        {
            row 
= source.Rows[i];
            text.Append(
"
");
            
for (int column = 0; column  source.Columns.Count; column++)
            {    
                text.Append(
"
");
            }
            text.Append(
"");
        }
        
int pageCount=(int)(Math.Ceiling(GetRecordCount()/(double)size));
        text.Append(
"");
        text.Append(
"");
        
if (pageIndex  pageCount)
        {
            text.Append(
"
");
        text.Append(
"
编号 姓名 年龄 性别 身高 工资
" + row[column].ToString() + "
首页 " + (pageIndex+1+ "");
        }
        
else
        {
            text.Append(
"");
        }
        
if (pageIndex > 1)
        {
            text.Append(
"
" + (pageIndex-1)+ "");
        }
        
else
        {
            text.Append(
"");
        }
        text.Append(
"
" + pageCount + ")'>尾页 ");
        text.Append(
"
当前页:"+pageIndex+"/"+pageCount+"
");
        
return text.ToString();
    }
    
/// 
    
/// 返回记录总条数
    
/// 
    
/// 
    [AjaxPro.AjaxMethod]
    
public int GetRecordCount()
    {
        MySqlConnection connection 
= new MySqlConnection(ConfigurationManager.ConnectionStrings["MySql"].ConnectionString);
        MySqlCommand command 
= new MySqlCommand("select count(userId) from userlist", connection);
        connection.Open();
        
int count = int.Parse(command.ExecuteScalar().ToString());
        connection.Close();
        command.Dispose();
        
return count;
    }
}

程序的运行效果:
用AjaxPro实现无刷新翻页效果及数据库分页技术介绍

用AjaxPro实现无刷新翻页效果及数据库分页技术介绍

用AjaxPro实现无刷新翻页效果及数据库分页技术介绍

最后说明:细心的朋友也许还会发现程序中public DataTable GetDataTable(int pageIndex, int size)也有AjaxMethod属性,我原本打算将这个方法写完的,可是现在时间太晚,留待大家实现了。这也就是另外一种办法:向客户端返回一个DataTable,在客户端将DataTable内的数据加工一下,它与我现在展示的方法区别是一个在服务器端、一个在客户端实现拼接div层的innerHtml方法。在服务器拼接的优点是纯cs代码,开发效率高,但是较真地说它占用了服务器资源;在客户端拼接的办法的优点就是拼接时不占用服务器资源,运行效率高,但是编写的时候效率较低。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Memahami imej 4K HD dengan mudah! Model berbilang modal besar ini secara automatik menganalisis kandungan poster web, menjadikannya sangat mudah untuk pekerja. Memahami imej 4K HD dengan mudah! Model berbilang modal besar ini secara automatik menganalisis kandungan poster web, menjadikannya sangat mudah untuk pekerja. Apr 23, 2024 am 08:04 AM

Model besar yang boleh menganalisis kandungan PDF, halaman web, poster dan carta Excel secara automatik tidak terlalu mudah untuk pekerja. Model InternLM-XComposer2-4KHD (disingkat IXC2-4KHD) yang dicadangkan oleh Shanghai AILab, Universiti China Hong Kong dan institusi penyelidikan lain menjadikan perkara ini menjadi kenyataan. Berbanding dengan model besar berbilang modal lain yang mempunyai had resolusi tidak lebih daripada 1500x1500, kerja ini meningkatkan imej input maksimum model besar berbilang mod kepada lebih resolusi 4K (3840x1600) dan menyokong sebarang nisbah aspek dan 336 piksel kepada 4K Perubahan resolusi dinamik. Tiga hari selepas dikeluarkan, model itu mengungguli senarai populariti model menjawab soalan visual HuggingFace. Mudah dikendalikan

Skrin bagus untuk bermain permainan Analisis ringkas skrin iQOO Neo9S Pro+ Skrin bagus untuk bermain permainan Analisis ringkas skrin iQOO Neo9S Pro+ Jul 19, 2024 pm 03:53 PM

Dalam pasaran telefon pintar hari ini, kualiti skrin telah menjadi salah satu petunjuk utama untuk mengukur prestasi keseluruhan telefon mudah alih. Siri Neo iQOO sentiasa komited untuk memberikan pengguna pengalaman permainan yang sangat baik dan keseronokan visual Produk terbaharu iQOO Neo9SPro+ menggunakan "Three Good Eye Protection Gaming Screen. Seterusnya, mari lihat kualiti skrin ini. iQOO Neo9S Pro+ dilengkapi dengan skrin langsung e-sukan 1.5 KOLED, yang menyokong kadar penyegaran adaptif LTPO perdana dari 1Hz hingga 144Hz, yang bermaksud ia boleh mencapai keadaan siap sedia kuasa ultra rendah apabila memaparkan kandungan statik, dan juga boleh menjadi pintar semasa permainan . Tukar kepada dinamik tinggi daripada 90Hz kepada 144Hz

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

OPPO Find X7 ialah karya agung! Abadikan setiap detik anda dengan imej OPPO Find X7 ialah karya agung! Abadikan setiap detik anda dengan imej Aug 07, 2024 pm 07:19 PM

Dalam era yang pantas ini, OPPO Find X7 boleh menggunakan kuasa pengimejannya untuk membolehkan kita menikmati setiap detik indah dalam hidup. Sama ada gunung yang indah, sungai, tasik atau laut, pertemuan keluarga yang mesra atau pertemuan dan kejutan di jalanan, ini boleh membantu anda merakamnya dengan kualiti gambar yang "tidak dapat ditandingi". Dari luar, reka bentuk Deco kamera Find It kelihatan sangat dikenali dan mempunyai rasa mewah. Bahagian dalam juga unik, bermula dengan konfigurasi perkakasan asas. FindX7 mengekalkan yang sebelumnya

Lebih daripada sekadar Gaussian 3D! Gambaran keseluruhan terkini teknik pembinaan semula 3D yang terkini Lebih daripada sekadar Gaussian 3D! Gambaran keseluruhan terkini teknik pembinaan semula 3D yang terkini Jun 02, 2024 pm 06:57 PM

Ditulis di atas & Pemahaman peribadi penulis ialah pembinaan semula 3D berasaskan imej ialah tugas mencabar yang melibatkan membuat inferens bentuk 3D objek atau pemandangan daripada set imej input. Kaedah berasaskan pembelajaran telah menarik perhatian kerana keupayaan mereka untuk menganggar secara langsung bentuk 3D. Kertas ulasan ini memfokuskan pada teknik pembinaan semula 3D yang canggih, termasuk menjana novel, pandangan ghaib. Gambaran keseluruhan perkembangan terkini dalam kaedah percikan Gaussian disediakan, termasuk jenis input, struktur model, perwakilan output dan strategi latihan. Cabaran yang tidak dapat diselesaikan dan hala tuju masa depan turut dibincangkan. Memandangkan kemajuan pesat dalam bidang ini dan banyak peluang untuk meningkatkan kaedah pembinaan semula 3D, pemeriksaan menyeluruh terhadap algoritma nampaknya penting. Oleh itu, kajian ini memberikan gambaran menyeluruh tentang kemajuan terkini dalam serakan Gaussian. (Leret ibu jari anda ke atas

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

GPT-4o revolusioner: Membentuk semula pengalaman interaksi manusia-komputer GPT-4o revolusioner: Membentuk semula pengalaman interaksi manusia-komputer Jun 07, 2024 pm 09:02 PM

Model GPT-4o yang dikeluarkan oleh OpenAI sudah pasti satu kejayaan besar, terutamanya dalam keupayaannya untuk memproses berbilang media input (teks, audio, imej) dan menjana output yang sepadan. Keupayaan ini menjadikan interaksi manusia-komputer lebih semula jadi dan intuitif, meningkatkan kepraktisan dan kebolehgunaan AI. Beberapa sorotan utama GPT-4o termasuk: kebolehskalaan tinggi, input dan output multimedia, penambahbaikan selanjutnya dalam keupayaan pemahaman bahasa semula jadi, dsb. 1. Input/output merentas media: GPT-4o+ boleh menerima sebarang kombinasi teks, audio dan imej sebagai input dan terus menjana output daripada media ini. Ini memecahkan had model AI tradisional yang hanya memproses satu jenis input, menjadikan interaksi manusia-komputer lebih fleksibel dan pelbagai. Inovasi ini membantu kuasa pembantu pintar

Cara terbaik untuk melaksanakan penomboran tatasusunan dalam PHP Cara terbaik untuk melaksanakan penomboran tatasusunan dalam PHP May 04, 2024 pm 02:39 PM

Terdapat dua cara paling biasa untuk menomborkan tatasusunan PHP: menggunakan fungsi array_slice(): hitung bilangan elemen untuk dilangkau, dan kemudian ekstrak julat elemen yang ditentukan. Gunakan iterator terbina dalam: laksanakan antara muka Iterator, dan kaedah rewind(), key(), current(), next(), dan valid() digunakan untuk melintasi elemen dalam julat yang ditentukan.

See all articles