pada store proc diatas terdapat tiga buah parameter yang digunakan untuk filtering jumlah record yang akan ditampilkan dan satu buah parameter untuk menghitung jumlah record yang ada pada tabel / view yang digunakan untuk menghitung jumlah halaman nantinya. Selain itu di store proc tsb juga digunakan Common Table Expression (CTE). Atau mungkin anda bisa menggantinya dengan membuat view yang serupa.
1: using System;
2: using System.Data;
3: using System.Configuration;
4: using System.Collections;
5: using System.Web;
6: using System.Web.Security;
7: using System.Web.UI;
8: using System.Web.UI.WebControls;
9: using System.Web.UI.WebControls.WebParts;
10: using System.Web.UI.HtmlControls;
11:
12: public partial class DataListPaging : System.Web.UI.Page
13: {
14:
15: private double dblJumlahRec;
16: private double dblTotalHalaman;
17: private int intTotalHalaman;
18:
19: protected void Page_Load(object sender, EventArgs e)
20: {
21: if (!IsPostBack)
22: {
23: ddlJumlahRecPerHalaman.Items.FindByValue(
24: Profile.JumlahRecPerHalaman).Selected = true;
25: }
26: }
27:
28: protected void sdsEmployee_Selecting(object sender,
29: SqlDataSourceSelectingEventArgs e)
30: {
31: //jika web form baru pertama kali di load
32: //atur recordnya dengan mengambil data
33: //dari baris pertama
34: if (Session["dari"] == null)
35: {
36: Session["dari"] = 1;
37: Session["sampai"] = Profile.JumlahRecPerHalaman;
38:
39: //index halaman yang sedang aktif :
40: Session["pageindex"] = 1;
41: }
42: e.Command.Parameters[0].Value = Convert.ToInt32(
43: Session["dari"]);
44: e.Command.Parameters[1].Value = Convert.ToInt32(
45: Session["sampai"]);
46: }
47: protected void sdsEmployee_Selected(object sender,
48: SqlDataSourceStatusEventArgs e)
49: {
50: //hitung jumlah record dari
51: //output paramater store proc :
52: dblJumlahRec = Convert.ToDouble(
53: e.Command.Parameters[2].Value);
54:
55: dblTotalHalaman = dblJumlahRec / Convert.ToDouble(
56: Profile.JumlahRecPerHalaman);
57:
58: //hitung total halaman (pembulatan ke atas)
59: //total halaman ini tergantung dari
60: //Profile.JumlahRecPerHalaman
61: //yang diatur dari dropdownlist
62: //jumlah record per halaman
63: //kenapa harus pake pembulatan ke atas?
64: //misalnya kalau jumlah recordnya ada 3
65: //dan jumlah record per halamannya ada 2
66: // maka kalau tidak dibulatkan
67: //hasilnya akan pecahan
68: intTotalHalaman = (int)Math.Ceiling(dblTotalHalaman);
69:
70: if (intTotalHalaman == 0) { Session["pageindex"] = 0; }
71: lblRecord.Text = "Hal " + Session["pageindex"].ToString() +
72: " dari " + intTotalHalaman.ToString() + " halaman";
73:
74: //pengaturan button navigasi (Enabled or Disabled):
75: if ((Convert.ToInt32(Session["pageindex"]) == 0) ||
76: (Convert.ToInt32(Session["pageindex"]) == 1
77: && intTotalHalaman == 1))
78: {
79: lbPrevious.Enabled = false;
80: lbNext.Enabled = false;
81: }
82: else if (Convert.ToInt32(Session["pageindex"]) >=
83: intTotalHalaman && intTotalHalaman != 1)
84: {
85: lbNext.Enabled = false;
86: lbPrevious.Enabled = true;
87: }
88: else if (Convert.ToInt32(Session["pageindex"]) == 1
89: && intTotalHalaman > 1)
90: {
91: lbPrevious.Enabled = false;
92: lbNext.Enabled = true;
93: }
94: }
95:
96: protected void lbPrevious_Click(object sender, EventArgs e)
97: {
98: Session["dari"] = Convert.ToInt32(Session["dari"])
99: - Convert.ToInt32(Profile.JumlahRecPerHalaman);
100: Session["sampai"] = Convert.ToInt32(Session["sampai"])
101: - Convert.ToInt32(Profile.JumlahRecPerHalaman);
102: Session["pageindex"] = Convert.ToInt32(
103: Session["pageindex"]) - 1;
104:
105: Response.Redirect("DataListPaging.aspx");
106: }
107:
108: protected void lbNext_Click(object sender, EventArgs e)
109: {
110: Session["dari"] = Convert.ToInt32(Session["sampai"]) + 1;
111: Session["sampai"] = Convert.ToInt32(Session["sampai"])
112: + Convert.ToInt32(Profile.JumlahRecPerHalaman);
113: Session["pageindex"] = Convert.ToInt32(
114: Session["pageindex"]) + 1;
115:
116: Response.Redirect("DataListPaging.aspx");
117: }
118:
119: protected void btnSetJumlahRec_Click(object sender, EventArgs e)
120: {
121: Profile.JumlahRecPerHalaman =
122: ddlJumlahRecPerHalaman.SelectedValue;
123: Session["pageindex"] = 1;
124: Session["dari"] = 1;
125: Session["sampai"] = Profile.JumlahRecPerHalaman;
126: Server.Transfer("DataListPaging.aspx");
127: }
128: }