Menggabungkan prosedur tersimpan membuat paging menjadi hal yang paling sederhana. Silakan lihat kode sumber berikut.
Prosedur tersimpan yang dioperasikan oleh kelas paging ini #region Prosedur tersimpan yang dioperasikan oleh kelas paging ini
/**//************************************************ *** ************
*
* Fungsi yang kuat, dikombinasikan dengan prosedur tersimpan berikut
*
***************************************************** *****/
/**//*
-- Pager 1,10,0,0, 'EmployeeID>2 dan EmployeeID<5 ' , 'Employees','*','LastName',0
BUAT PROSEDUR Pager
@PageIndex int,--indeks halaman 1
@PageSize int,--jumlah halaman per halaman 2
@RecordCount int out,--Jumlah total baris 3
@PageCount int keluar,--jumlah total halaman 4
@WhereCondition Nvarchar(1000),--kondisi kueri 5
@TableName nvarchar(500),--nama tabel kueri 6
@SelectStr nvarchar(500) = '*',--Kolom kueri 7
@Pesan nvarchar(500),--diurutkan kolom 8
@OrderType bit = 0, -- Tetapkan jenis penyortiran, nilai non-0 adalah urutan menurun 9
@Groupby NVarChar(100) = ''
AS
menyatakan @strSQL nvarchar(2000) -- pernyataan utama
deklarasikan @strTmp nvarchar(1000) -- variabel sementara
deklarasikan @strOrder nvarchar(1000) -- jenis pengurutan
jika @OrderType != 0
mulai
setel @strTmp = '<(pilih menit'
set @strOrder = ' pesan berdasarkan ' + @Order +' desc'
akhir
kalau tidak
mulai
setel @strTmp = '>(pilih maks'
set @strOrder = 'pesan berdasarkan' + @Order +' asc'
akhir
@strSQL = 'pilih atas ' + str(@PageSize) + ' ' + @SelectStr + ' dari '
+ @NamaTabel + 'di mana' + @Pesanan + '' + @strTmp + '(['
+ @Order + ']) dari (pilih atas ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @Order + '] dari ' + @TableName + '' + @strOrder + ') sebagai tblTmp)'
+ @Groupby + @strOrder
jika @WhereCondition != ''
set @strSQL = 'pilih atas ' + str(@PageSize) + ' ' + @SelectStr + ' dari '
+ @NamaTabel + 'di mana' + @Pesanan + '' + @strTmp + '(['
+ @Order + ']) dari (pilih atas ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @Order + '] dari ' + @TableName + ' di mana (' + @WhereCondition + ') '
+ @strOrder + ') sebagai tblTmp) dan (' + @WhereCondition + ') ' + @Groupby + @strOrder
jika @PageIndex = 1
mulai
atur @strTmp = ''
jika @WhereCondition != ''
set @strTmp = ' di mana (' + @WhereCondition + ')'
set @strSQL = 'pilih atas ' + str(@PageSize) + ' ' + @SelectStr + ' dari '
+ @NamaTabel + '' + @strTmp + '' + @Groupby + @strOrder
akhir
eksekutif(@strSQL)
--print @strSQL
JIKA @WhereCondition <>''
Mulai
SET @strTmp = 'PILIH -1 DARI ' + @NamaTabel + ' Dimana ' + (@WhereCondition)
Akhir
KALAU TIDAK
Mulai
SET @strTmp = 'PILIH -1 DARI ' + @NamaTabel
Akhir
EXEC SP_EXECUTESQL @strTmp
SET @RecordCount = @@RowCount
-- Dapatkan jumlah total halaman
-- Fungsi "CEILING": Mendapatkan bilangan bulat terkecil yang tidak kurang dari angka tertentu
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
PERGI
******************************************************* * ***************************/
/**//************************************************ ************************************
*
* Penggunaan
*
***************************************************** *****************************/
/**//*
Redupkan ts As String = Request.Form.Item("txtDate")
If (ts = "" Atau ts Bukan Apa-apa) Lalu
ts = Permintaan.QueryString("txtDate")
Akhiri Jika
Redupkan ts2 As String = Request.Form.Item("txtDate2")
If (ts2 = "" Atau ts2 Bukan Apa-apa) Lalu
ts2 = Permintaan.QueryString("txtDate2")
Berakhir Jika
Redup ps As String = Permintaan.Form.Item("pageIndex")
If (ps = "" Atau ps Tidak Ada) Lalu
ps = Permintaan.QueryString("indeks halaman")
Berakhir Jika
Dim t Sebagai Integer = 2
Redupkan p Sebagai Integer = 1
Jika itu bukan apa-apa, maka
ts = ""
Akhiri Jika
Jika ps Bukan Apa-apa, Lalu
ps = ""
Akhiri Jika
Jika Tidak (ps = "") Kemudian
p = Integer.Parse(ps)
Berakhir Jika
Meredupkan pager Sebagai Pager = Pager Baru
pager.PageIndex = hal
pager.Ukuran Halaman = 20
pager.PageMode = PageMode.Str
pager.WhereCondition = "Tanggal antara convert(datetime,'" + ts + "') dan convert(datetime,'" + ts2 + "')"
'pager.WhereCondition = " convert(char(10),TheDate,120)= '" + ts + "'"
pager.TableName = "LoadCountlog"
pager.PilihStr = "*"
pager.Pesanan = "ID"
pager.OrderType = Salah
Redupkan dt Sebagai System.Data.DataTable = pager.GetDatas(p)
myDataGrid.DataSource = dt
myDataGrid.DataBind()
Redupkan goUrl As String = "WebForm1.aspx?txtDate=" + ts + "&txtDate2=" + ts2
Me.Label3.Text = "Total:" + pager.PageCount.ToString + "Page," + pager.RecordCount.ToString() + "Bar" + pager.OutPager(pager, goUrl, False) + "< /kuat>"
*/
#wilayah akhir
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Data.SqlClient;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Koleksi;
menggunakan Sistem.Teks;
namespace sungguh beruntung
{
/**////
/// Mode halaman
///
Mode Halaman enum publik
{
/**////
///Nomor halaman
///
Jumlah =0,
/**////
/// Halaman karakter
///
Str =1
}
/**////
/// Kelas paging dapat melakukan paging melalui prosedur tersimpan dan cukup kuat.
///
Pager kelas publik
{
indeks halaman int pribadi = 0;
catatan int pribadi = 0;
ukuran halaman int pribadi = 20;
private int pageCount = 0;
pribadi int rowCount = 0;
string pribadi tableName = "";
string pribadi di manaKondisi = "1=1";
string pribadi selectStr = "*";
urutan string pribadi = "";
prosedur string pribadi="pager";
tipe pesanan bool pribadi = true;
PageMode pribadi pageMode =PageMode.Num;
string pribadi sqlConnectionString = ConfigurationSettings.AppSettings["database"];
private string databaseOwner = "dbo";
koneksi data#koneksi data wilayah
/**////
/// String koneksi data
///
string pribadi SqlConnectionString
{
mendapatkan
{
kembalikan ini.sqlConnectionString;
}
mengatur
{
this.sqlConnectionString=nilai;
}
}
/**////
///Dapatkan contoh koneksi
///
///
SqlConnection pribadi GetSqlConnectionString()
{
mencoba
{
kembalikan SqlConnection baru (SqlConnectionString);
}
menangkap
{
throw new Exception("String Koneksi SQL tidak valid.");
}
}
/**////
/// Pemilik objek data
///
string pribadi Pemilik Database
{
mendapatkan
{
kembalikan ini.databaseOwner;
}
mengatur{
this.databaseOwner=nilai;
}
}
wilayah akhir
()
{
//
// TODO: tambahkan logika konstruktor di sini
//
//Enum.Parse(tyo
}
Pager publik (konstr string)
{
jika (konstr!=null)
this.SqlConnectionString=konstr;
}
#wilayah
/**////
/// Nama prosedur tersimpan yang akan dioperasikan memiliki prosedur paging tersimpan default.
///
Prosedur string publik
{
mendapatkan{
kembalikan this.procedure;
}
mengatur {
if (nilai==null || nilai.Panjang <=0)
{
this.procedure="pager";
}
kalau tidak
{
this.procedure=nilai;
}
}
}
/**////
/// Jumlah halaman yang sedang ditampilkan
///
publik int Indeks Halaman
{
mendapatkan
{
kembalikan ini.pageIndex;
}
mengatur
{
this.pageIndex = nilai;
}
}
/**////
///Jumlah total halaman
///
jumlah halaman int publik
{
mendapatkan
{
kembalikan ini.pageCount;
}
mengatur
{
this.pageCount = nilai;
}
}
/**////
///Jumlah total baris
///
RecordCount int publik
{
mendapatkan
{
kembalikan ini.recordCount;
}
mengatur
{
this.recordCount = nilai;
}
}
/**////
///Jumlah item per halaman
///
ukuran halaman int publik
{
mendapatkan
{
kembalikan ini.pageSize;
}
mengatur
{
this.pageSize = nilai;
}
}
/**////
///Nama tabel
///
string publik Nama Tabel
{
mendapatkan
{
kembalikan nama tabel;
}
mengatur
{
this.tableName = nilai;
}
}
/**////
/// Kueri bersyarat
///
string publik WhereCondition
{
mendapatkan
{
kembali ke manaKondisi;
}
mengatur
{
dimanaKondisi = nilai;
}
}
/**////
/// Target kueri (target pencarian), seperti: Waktu AddTime AS, nomor ID AS
///
string publik SelectStr
{
mendapatkan
{
kembali pilihStr;
}
mengatur
{
pilihStr = nilai;
}
}
/**////
/// Kolom yang diurutkan
///
Urutan string publik
{
mendapatkan
{
pesanan pengembalian;
}
mengatur
{
pesanan = nilai;
}
}
/**////
/// Jenis pengurutan benar:asc salah:desc
///
bool publik OrderType
{
mendapatkan
{
kembalikan tipe pesanan;
}
mengatur
{
tipe pesanan = nilai;
}
}
/**////
/// Mode halaman
///
Mode Halaman Mode Halaman publik
{
mendapatkan
{
kembalikan ini.pageMode;
}
mengatur
{
this.pageMode = nilai;
}
}
/**////
/// Dapatkan jumlah yang dikembalikan saat ini
///
publik ke RowCount
{
mendapatkan
{
kembalikan ini.rowCount;
}
}
string pribadi dikelompokkan berdasarkan;
string publik Groupby
{
mendapatkan
{
kembalikan ini.groupby;
}
mengatur
{
this.groupby = nilai;
}
}
#wilayah akhir
/**////
/// Hasil pencarian paginasi
///
Tabel Data publik GetDatas(int indeks halaman)
{
this.pageIndex = indeks halaman;
Pager pager = ini;
//pager.pageIndex = indeks halaman;
DataTable returnTb = Pagination(ref pager).Tabel[0];
this.rowCount = returnTb.Rows.Count;
kembali kembaliTb;
}
/**////
/// Fungsi prosedur tersimpan operasi paging
///
///
///
Pagination DataSet pribadi (ref Pager pager)
{
menggunakan (SqlConnection myConnection = GetSqlConnectionString() )
{
SqlDataAdapter myCommand = new SqlDataAdapter(pager.databaseOwner + "."+pager.Procedure, myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parameterPageIndex = new SqlParameter("@PageIndex", SqlDbType.Int);
parameterPageIndex.Value = pager.PageIndex;
myCommand.SelectCommand.Parameters.Add(parameterPageIndex);
SqlParameter parameterPageSize = new SqlParameter("@PageSize", SqlDbType.Int);
parameterPageSize.Value = pager.PageSize;
myCommand.SelectCommand.Parameters.Add(parameterPageSize);
SqlParameter parameterRecordCount = new SqlParameter("@RecordCount", SqlDbType.Int);
parameterRecordCount.Nilai = 0;
parameterRecordCount.Direction = ParameterDirection.InputOutput;
myCommand.SelectCommand.Parameters.Add(parameterRecordCount);
SqlParameter parameterPageCount = SqlParameter baru("@PageCount", SqlDbType.Int);
parameterPageCount.Nilai = 0;
parameterPageCount.Direction = ParameterDirection.InputOutput;
myCommand.SelectCommand.Parameters.Add(parameterPageCount);
SqlParameter parameterWhereCondition = new SqlParameter("@WhereCondition", SqlDbType.NVarChar,500);
parameterWhereCondition.Value = pager.WhereCondition;
myCommand.SelectCommand.Parameters.Add(parameterWhereCondition);
SqlParameter parameterTableName = new SqlParameter("@TableName", SqlDbType.NVarChar,500);
parameterNamaTabel.Nilai = pager.NamaTabel;
myCommand.SelectCommand.Parameters.Add(parameterTableName);
SqlParameter parameterOrder = new SqlParameter("@Order", SqlDbType.NVarChar,500);
parameterOrder.Value = pager.Order;
myCommand.SelectCommand.Parameters.Add(parameterOrder);
SqlParameter parameterSelectStr = new SqlParameter("@SelectStr", SqlDbType.NVarChar,500);
parameterSelectStr.Value = pager.SelectStr;
myCommand.SelectCommand.Parameters.Add(parameterSelectStr);
SqlParameter parameterGroupby = new SqlParameter("@Groupby", SqlDbType.NVarChar, 100);
parameterGroupby.Value = pager.Groupby;
myCommand.SelectCommand.Parameters.Add(parameterGroupby);
SqlParameter parameterOrderType = new SqlParameter("@OrderType", SqlDbType.Bit);
parameterOrderType.Value = pager.OrderType==false?0:1;
myCommand.SelectCommand.Parameters.Add(parameterOrderType);
DataSet returnDS = DataSet baru();
//SqlDataAdapter sqlDA = myCommand.crnew SqlDataAdapter(myCommand);
myCommand.Fill(returnDS);
pager.PageCount = (int)parameterPageCount.Value;
pager.RecordCount = (int)parameterRecordCount.Value
;
}
}
Hasilkan penomoran halaman #region Hasilkan penomoran halaman
/**////
/// Hasilkan format paging
///
///
///
///
///
string publik OutPager(Pager pager,url string,bool isBr)
{
StringBuilder returnOurWml;
jika(adalahBr)
{
returnOurWml= new StringBuilder("["+ pager.PageCount.ToString() + "halaman," + pager.RecordCount.ToString() +"bar]
");
}
kalau tidak
{
returnOurWml = StringBuilder baru();
}
if (pager.PageMode == PageMode.Num)
{
//Nomor yang ditampilkan di setiap baris paging
int jumlah halaman = 10;
int halaman = 0;
int mulaiInt = 1;
int endInt = pager.PageCount;
int saya = 1;
string endStr = "";
jika (pager.PageCount>pagersCount)
{
//ganda k = ;
pager = pager.PageIndex / pagersCount;
jika (pager == 0)
{
pager = 1;
}
else if((pager.PageIndex % pagersCount)!=0)
{
pager +=1;
}
endInt = pager * pagersCount;
jika (pager.PageIndex <= endInt)
{
startInt = endInt +1 - pagersCount;
jika (mulaiInt <1)
{
mulaiInt = 1;
}
}
//pagersCount ketika jumlah tampilan tidak mencukupi
if (endInt>=pager.PageCount)
{
endInt = pager.PageCount;
}
kalau tidak
{
//jika (pager.PageIndex)
endStr = " endStr += url + "&pageIndex=" + (endInt + 1).ToString() + "" title='halaman" + (endInt + 1).ToString()+"halaman'>";
endStr += ">>";
endStr += " ";
}
jika (pager > 1)
{
returnOurWml.Append(" returnOurWml.Append(url + "&pageIndex=" + (startInt - 1).ToString() + "" title='page" + (startInt - 1).ToString()+"page'>");
returnOurWml.Append("<<");
returnOurWml.Append(" ");
}
}
untuk (i = startInt; i<=endInt;i++)
{
jika (i!=pager.PageIndex)
{
returnOurWml.Append(" returnOurWml.Append(url + "&pageIndex=" + i.ToString() + "" title='page"+ i.ToString()+"page'>");
returnOurWml.Append("["+i.ToString() + "]");
returnOurWml.Append(" ");
}
kalau tidak
{
returnOurWml.Append(""+ i.ToString() + "");
}
}
returnOurWml.Append(endStr);
return returnOurWml.Append("
").ToString();
}
kalau tidak
{
jika (pager.PageIndex > 1)
{
returnOurWml.Append(" returnOurWml.Append(url + "&pageIndex=" + (pager.PageIndex -1).ToString() + "">");
returnOurWml.Append("Halaman sebelumnya");
returnOurWml.Append(" ");
}
jika (pager.PageIndex < pager.PageCount)
{
returnOurWml.Append(pager.PageIndex.ToString());
returnOurWml.Append(" returnOurWml.Append(url + "&pageIndex=" + (pager.PageIndex +1).ToString() + "">");
returnOurWml.Append("Halaman berikutnya");
returnOurWml.Append(" ");
}
return returnOurWml.Append("
").ToString();
}
}
#wilayah akhir
}
}
http://www.cnblogs.com/solucky/archive/2006/09/20/509741.html