// Kode sumber ini hanya untuk referensi belajar, bukan untuk tujuan komersial apa pun;
// Jika Anda perlu memodifikasi dan menunjuk kembali kontrol, simpan informasi hak cipta dari kode sumber lengkap!
// Untuk informasi tentang peningkatan kontrol dan informasi rilis kontrol baru, harap perhatikan www.webdiyer.com.
menggunakan sistem;
menggunakan system.io;
menggunakan System.web;
menggunakan system.web.ui;
menggunakan system.web.ui.webControls;
menggunakan system.web.ui.htmlControls;
Menggunakan System.Collections.Spesialisasi;
menggunakan System.Text;
menggunakan System.ComponentModel;
Menggunakan System.ComponentMol.Design;
menggunakan System.Collections;
namespace wuqi.webdiyer
{{
Kontrol Server #Region AspNetPager
Deskripsi dan contoh kontrol #Region
/// <summary>
/// untuk kontrol server untuk data paging data di aplikasi web ASP.NET.
/// </summary>
/// <komarki> Tidak seperti kontrol datagrid, kontrol paging aspnetpager itu sendiri tidak menampilkan data apa pun, tetapi hanya menampilkan elemen navigasi halaman. Kontrol ini dapat menghiasi datagrid, distalist, repeater, dan kontrol khusus. besar!
/// <p> Aspnetpager 2.0 baru menambahkan fungsi paging melalui URL, yang memungkinkan pengunjung untuk secara langsung memasukkan URL yang sesuai untuk mengakses halaman apa pun, dan mesin pencari juga dapat secara langsung mengambil setiap halaman. </p>
/// <p> Untuk menggunakan kontrol pagar aspnetpager, setidaknya harus menentukan <lihat cref = "recordcount"/> atribut, tentukan dan tulis program pemrosesan dari acara <lihat cref = "pagechanged"/>.
/// <Lihat cref = "RecordCount"/> Atribut menentukan jumlah total semua data yang akan di -paging dalam paging.
/// Jika program pemrosesan acara <lihat cref = "pageChanged"/> tidak ditentukan dan ditulis, maka ketika pengguna mengklik elemen navigasi halaman atau indeks halaman input tangan tangan di kotak teks indeks halaman dan mengirimkannya halamannya .
/// Metode paging dari kontrol aspnetpager pada dasarnya sama dengan datagrid, yaitu, dalam <lihat cref = "pagechanged"/> program pemrosesan acara, <lihat cref = "pagechangedeventargs" dari <lihat cref = "PagechangedEventArgs.newpageIndex"/> nilai ditetapkan untuk atribut <lihat cref = "currentPageIndex"/> dari <lihat cref = "currentPageIndex"/>, dan kemudian mengubah kontrol data dan data tampilan data baru. </p> </kamerk>
/// <sontohnya> Contoh -contoh berikut menunjukkan cara menggunakan aspnetpager untuk halaman datagrid.
/// <code> <!
/// <%@ halaman bahasa = "C#"%>
/// <%@ import namespace = "system.data"%>
/// <%@impor namespace = "System.data.sqlclient"%>
/// <%@impor namespace = "system.configuration"%>
/// <%@register tagprefix = "webdiyer" namespace = "wuqi.webdiyer" assembly = "aspnetpager"%>
/// <html>
/// <head>
/// <title> Selamat datang di webdiyer.com </iteme>
/// <skrip runat = "server">
/// SQLConnection Conn;
/// sqlCommand cmd;
/// void page_load (objek src, eventargs e)
/// {
// conn = SQLConnection baru (configurationsettings.appsettings ["connstr"];
/// if (! page.ispostback)
/// {
/// cmd = sqlCommand baru ("getNews", conn);
/// cmd.CommandType = commandType.StoredProcedure;
/// cmd.parameters.add ("@posgeIndex", 1);
/// cmd.parameters.add ("@pagesize", 1);
/// cmd.parameters.add ("@docount", true);
// conn.open ();
/// pager.recordcount = (int) cmd.executescalal ();
// conn.close ();
/// binddata ();
///}
///}
///
/// void binddata ()
/// {
/// cmd = sqlCommand baru ("getNews", conn);
/// cmd.CommandType = commandType.StoredProcedure;
/// cmd.parameters.add ("@posgeIndex", pager.currentpageIndex);
/// cmd.parameters.add ("@pagesize", pager.pagesize);
/// cmd.parameters.add ("@docount", false);
// conn.open ();
/// datagrid1.datasource = cmd.executereader ();
/// datagrid1.databind ();
// conn.close ();
/// pager.custominfotext = "Rekam total: <font color =" blue "> <b>"+pager.recordcount.toString ()+"</font>" ";
/// pager.custominfotext+= "Nomor halaman total: <font color =" blue "> <b>"+pager.pagecount.toString ()+"</font>" ";
/// pager.custominfotext+= "Halaman saat ini: <font color =" red "> <b>"+pager.currentpageIndex.toString ()+"</b> </font>"
///}
/// void changepage (objek src, pagechangedeventargs e)
/// {
/// pager.currentpageIndex = e.newpageIndex;
/// binddata ();
///}
/// </script>
/// <meta http-equiv = "konten-bahasa" konten = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "umum" konten = "editplus">
/// <meta name = "penulis" content = "webdiyer ([email dilindungi])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: datagrid id = "datagrid1" runat = "server"/>
/// <webdiyer: aspnetpager id = "pager"
/// runat = "server"
/// pageSize = "8"
/// numericbuttoncount = "8"
/// showcustominfosection = "left"
/// pagingbuttonspacing = "0"
/// showInputBox = "selalu"
/// cssclass = "mypager"
/// horizontalalal = "benar"
/// Onpagechanged = "ChangePage"
/// kirimbuttontext = "turn to"
/// numericbuttontextFormatString = "[{0}]"/>
/// </form>
/// </body>
/// </html>
///]]>
/// </code>
/// <p> Prosedur penyimpanan SQL Server yang digunakan dalam contoh ini: </p>
/// <code>
/// <!
/// Buat Prosedur GetNews
/// (@pagesize int,
/// @pageIndex int,
@Docount bit)
/// sebagai
/// atur nocount on
/// if (@docount = 1)
/// Pilih Hitung (ID) dari berita
/// kalau tidak
/// mulai
/// mendeklarasikan @indextable tabl
/// mendeklarasikan @pagelowerbound int
/// Deklarasikan @pageupperbound int
/// set @pagelowerbound = (@pageIndex-)*@pagesize
/// set @[Email Dilindungi] [Email Dilindungi]
/// atur rowcount @pageupperbound
/// Masukkan ke @Indextable (NID) Pilih ID dari pesanan berita dengan addTime desc
/// Pilih O.id, O.Source, O.Title, O.Addtime dari News
/// dan t.id> @PageElowerBound dan t.id <= @pageupperbound pesanan oleh T.id
/// akhir
/// atur nocount off
/// PERGI
///]]>
/// </code> </example>
#Endregion
[DefaultProperty ("PageSize")]
[DefaultEvent ("Pagechanged")]
[Parsechildrn (false)]]
[Persistchildren (false)]
[deskripsi ("" Kontrol pagination untuk aplikasi web ASP.NET ")]]]]]]]]]]]
[Desainer (TypeOf (Pagerdesigner)]]
[ToolboxData (<{0}: aspnetpager runat = server> </{0}: aspnetpager> ")]]
AspnetPager kelas publik: panel, inamingcontainer, ipostbackeventhandler, ipostbackdatahandler
{{
Private String CSSClassName;
Private string urlpageIndexName = "page";
Private bool urlpaging = false;
Private String InputPageIndex;
Private String currentUrl = null;
Private namevaluecollection urlparams = null;
/// Dapatkan atau tetapkan nilai.
/// </summary>
[Browsable (true),
kategori ("tombol navigasi"), defaultValue (true), description ("Menentukan kapan mouse tetap pada tombol navigasi, adalah prompt alat tampilan"]]]]]]]]
BOOL PUBLIK TAMPILKANAVIBIGATIONTOOLTIP
{{
mendapatkan
{{
objek obj = viewState ["ditunjukkanvigationTooltip"];
Return (obj == null)?
}
mengatur
{{
ViewState ["ditunjukkanvigationToolTip"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur alat tombol navigasi untuk meminta format teks.
/// </summary>
[Browsable (true),
Kategori ("tombol navigasi"),
DefaultValue ("Turn ke halaman No. {0}"),
Deskripsi ("Halaman Navigasi Tombol Tombol Pengingat Format Teks")]]
String publik
{{
mendapatkan
{{
objek obj = viewstate ["navigationToolTipTextFormatString"];
Return (obj == null)? "Putar ke halaman {0} halaman": (string) obj;
}
mengatur
{{
tip string = nilai;
if.trim ().
tip = "{0}";
View -state
}
} /// <summary>
/// Dapatkan atau atur nilai.
/// </summary>
/// <lmarks>
/// Saat mengatur nilai ini ke true dan tidak menggunakan tombol gambar, nilai tombol indeks halaman 1, 2, 3, dll. Akan diganti dengan karakter Cina terlebih dahulu, dua, dan tiga.
/// </petaran>
[Browsable (true),
Kategori ("tombol navigasi"),
DefaultValue (false),
Deskripsi ("Apakah tombol Nilai Indeks Halaman digantikan oleh nomor Cina First, Second, and Third,"]]
BOOL PUBLIK CHINESEPAGEIDEX
{{
mendapatkan
{{
objek obj = viewstate ["chinesePageIndex"];
Return (obj == null)?
}
mengatur
{{
Viewstate ["chinesePageIndex"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur format tampilan teks pada tombol navigasi angka.
/// </summary>
/// <value>
/// String, tentukan format tampilan teks pada nilai indeks halaman halaman, nilai default adalah <lihat cref = "string.empty"/>, yaitu, properti tidak diatur. </value>
/// <lmarks>
/// Gunakan properti NumericButTontextFormatString untuk menentukan format tampilan dari tombol nilai yang diindeks.
/// Jika nilainya diatur ke "[{0}]", teks indeks akan ditampilkan sebagai: [1] [2] [3] ..., atur nilainya ke "-{0}-", dan kemudian putar teks indeks ke: -1--2- -3- ...
/// </petaran>
[Browsable (true),
DefaultValue ("") ,,
Kategori ("tombol navigasi"),
Deskripsi ("Format Tampilan Teks pada Tombol Numerik Indeks Halaman")]
String publik numerikbuttontextFormatString
{{
mendapatkan
{{
objek obj = viewstate
Return (obj == null)?
}
mengatur
{{
ViewState ["numericbuttontextextFormatring"] = value;
}
} /// <summary>
/// Dapatkan atau atur jenis tombol navigasi paging, bahkan jika teks masih gambar.
/// </summary>
/// <lmarks>
/// Untuk menggunakan tombol gambar, Anda perlu menyiapkan gambar berikut: Sepuluh nilai dari 0 hingga 9 (ketika showPageIndex disetel ke true), halaman pertama, halaman sebelumnya, halaman berikutnya, halaman terakhir dan banyak lagi Semakin banyak halaman halaman (...) lima tombol (ketika showfirstlast dan showprevNext diatur ke true),
/// Jika tombol numerik dari indeks halaman saat ini diperlukan untuk berbeda dari tombol indeks halaman lain, Anda perlu menyiapkan gambar tombol dari indeks halaman saat ini;
/// Jika gambar halaman pertama yang dinonaktifkan, halaman terakhir, halaman berikutnya, dan halaman terakhir berbeda dari gambar tombol normal, Anda perlu menyiapkan gambar keempat tombol ini dalam keadaan cacat;
/// <p> <b> Aturan penamaan file gambar adalah sebagai berikut: </b> </p>
/// <p> Dari 0 hingga 9 Tanggal Numerik, gambar harus dinamai "Value+ButtonImagenextExexExenses+ButtonImageExtentation".
/// ButtonImageExtenting adalah nama akhiran dari file gambar, seperti .gif atau .jpg, dll., Jenis file gambar apa pun yang dapat ditampilkan di browser. Misalnya, file gambar indeks halaman "1" dapat dinamai "1.gif" atau "1.jpg",
/// Ketika Anda memiliki dua atau lebih set file gambar, Anda dapat membedakan berbagai set gambar yang berbeda dengan menentukan nilai atribut ButtonImagenameExtent. "1.gif". " segera. </p>
/// <p> Nama file gambar dari halaman halaman pertama dimulai dengan "First". Apakah ButtonImagenameExketNsion menggunakan tombolImagenameExtension tergantung pada pengaturan tombol numerik dan apakah ada lebih banyak gambar. </p>
/// </petaran>
/// <sontohnya>
/// contoh fragmen kode berikut jika menggunakan tombol gambar:
/// <p>
/// <code> <!
/// <webdiyer: aspnetpager runat = "server"
/// id = "pager1"
/// Onpagechanged = "ChangePage"
/// pagingbuttontype = "gambar"
/// imagepath = "gambar"
/// buttonimagenextent = "n"
/// disabledButtonimagenextension = "g"
/// buttonimageExtent = "gif"
/// cpibuttonimagenexension = "r"
/// pagingbuttonspacing = 5/>
///]]>
/// </code>
/// </p>
/// </example>
[Browsable (true),
DefaultValue (pagingbuttontype.text),
Kategori ("tombol navigasi"),
Keterangan
PagingButtontype PagingButTisepe
{{
mendapatkan
{{
objek obj = viewstate
Return (obj == null)?
}
mengatur
{{
View -state
}
} /// <summary>
/// Dapatkan atau atur jenis tombol numerik navigasi, yang hanya valid ketika pagingbuttontype diatur ke gambar.
/// </summary>
/// <lmarks>
/// Saat Anda mengatur pagingbuttontype ke gambar, ketika Anda tidak ingin tombol indeks halaman numerik menggunakan gambar, Anda dapat mengatur nilai ke teks, yang akan membuat tombol data indeks halaman menggunakan teks alih -alih tombol gambar .
/// </petaran>
[Browsable (true),
DefaultValue (pagingbuttontype.text),
Kategori ("tombol navigasi"),
Deskripsi ("tipe" navigasi halaman numeral numerical tombol ")]]
PagingButtontype numerikButtontype
{{
mendapatkan
{{
objek obj = viewstate
Return (obj == null)?
}
mengatur
{{
Viewstate ["numericbuttontype"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur jenis halaman pertama, halaman terakhir, halaman berikutnya dan halaman terakhir.
/// </summary>
/// <lmarks>
/// Saat Anda mengatur pagingbuttontype ke gambar tetapi tidak ingin menggunakan gambar untuk halaman pertama, berikutnya, halaman berikutnya, dan halaman terakhir, Anda dapat mengatur nilai ke teks, yang akan membuat empat tombol sebelumnya pada yang sebelumnya Empat tombol menggunakan teks alih -alih tombol gambar.
/// </petaran>
[Browsable (true),
Kategori ("tombol navigasi"),
DefaultValue (pagingbuttontype.text),
Keterangan
PagingButTontype Publik
{{
mendapatkan
{{
objek obj = viewstate ["navigationButtontype"];
Return (obj == null)?
}
mengatur
{{
Viewstate ["navigationButtontype"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur jenis "lebih banyak halaman" (...), yang hanya valid ketika pagingbuttontype diatur ke gambar.
/// </summary>
/// <lmarks>
/// Saat Anda mengatur pagingbuttontype ke gambar tetapi tidak ingin lebih banyak halaman (...) tombol untuk menggunakan gambar, Anda dapat mengatur nilai ini ke teks, yang akan membuat lebih banyak tombol halaman menggunakan teks alih -alih tombol gambar.
/// </petaran>
[Browsable (true),
Kategori ("tombol navigasi"),
DefaultValue (pagingbuttontype.text),
Deskripsi ("lebih banyak halaman" (...) tipe tombol ")]
PagingButTontype MoreButtonpe
{{
mendapatkan
{{
objek obj = viewstate ["MoreButtisepe"];
Return (obj == null)?
}
mengatur
{{
Viewstate ["MoreButTisepe"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur jarak antara tombol navigasi paging.
/// </summary>
[Browsable (true),
Kategori ("tombol navigasi"),
DefaultValue (typeof (unit), "5px"),
Keterangan
Paging PagingButtonspacing
{{
mendapatkan
{{
objek obj = viewstate ["pagingbuttonspacing"];
Return (obj == null)?
}
mengatur
{{
Viewstate ["pagingbuttonspacing"] = nilai;
}
} /// <summary>
/// Dapatkan atau atur nilai, yang menunjukkan apakah tombol halaman pertama dan terakhir ditampilkan pada elemen navigasi halaman.
/// </summary>
[Browsable (true),
Deskripsi
Kategori ("tombol navigasi"),
DefaultValue (true)]
Public Bool Showfirstlast
{{
mendapatkan
{{
objek obj = viewstate ["showfirstlast"];
Return (obj == null)?
}
set {viewstate ["showfirtlast"] = value;}
} /// <summary>
/// Mendapatkan atau menetapkan nilai, nilai ini menunjukkan apakah halaman sebelumnya dan halaman berikutnya ditampilkan di elemen navigasi halaman.
/// </summary>
[Browsable (true),
Deskripsi
Kategori ("tombol navigasi"),
DefaultValue (true)]
Public bool showprevNext
{{
mendapatkan
{{
objek obj = viewstate ["showprevNext"];
Return (obj == null)?
}
set {viewstate ["showprevNext"] = value;}
} /// <summary>
/// Dapatkan atau atur nilai yang menunjukkan apakah tombol nilai indeks halaman ditampilkan di elemen navigasi halaman.
/// </summary>
[Browsable (true),
Deskripsi ("Apakah tombol nilai ditampilkan di elemen navigasi halaman"),
Kategori ("tombol navigasi"),
DefaultValue (true)]
Public Bool ShowpageIndex
{{
mendapatkan
{{
objek obj = viewstate ["showpageIndex"];
Return (obj == null)?
}
set {viewstate ["showpageIndex"] = value;}
} /// <summary>
/// Dapatkan atau atur ke teks yang ditampilkan oleh tombol halaman pertama.
/// </summary>
[Browsable (true),
deskripsi ("Teks ditampilkan pada tombol halaman pertama"),
Kategori ("tombol navigasi"),
DefaultValue ("<font face =" Webdings "> 9 </font>"]]]
string publik firstpagetext
{{
mendapatkan
{{
objek obj = viewstate ["firstpageText"];
Return (obj == null)? "<Font face =" webdings "> 9 </font>": (string) obj;
}
atur {viewState ["firstPageText"] = value;}
} /// <summary>
/// Dapatkan atau atur ke teks yang ditampilkan di tombol halaman sebelumnya.
/// </summary>
[Browsable (true),
Deskripsi ("Teks ditampilkan pada tombol halaman sebelumnya"),
Kategori ("tombol navigasi"),
DefaultValue ("<font face =" webdings "> 3 </font>"]]]
String publik prevagetext
{{
mendapatkan
{{
objek obj = viewstate ["prevagetext"];
Return (obj == null)? "<Font face =" webdings "> 3 </font>": (string) obj;
}
set {viewstate ["prevPageText"] = value;}
} /// <summary>
/// Dapatkan atau atur teks yang ditampilkan oleh halaman berikutnya.
/// </summary>
[Browsable (true),
Deskripsi ("Teks ditampilkan pada tombol halaman berikutnya"),
Kategori ("tombol navigasi"),
DefaultValue ("<font face =" webdings "> 4 </font>"]]]
String publik NextPagetext
{{
mendapatkan
{{
objek obj = viewstate ["nextPageText"];
Return (obj == null)? "<Font face =" webdings "> 4 </font>": (string) obj;
}
atur {viewstate ["nextPageText"] = value;}
} /// <summary>
/// Dapatkan atau atur teks yang ditampilkan sebagai tombol halaman terakhir.
/// </summary>
[Browsable (true),
Deskripsi ("Teks Ditampilkan pada Tombol Halaman Terakhir"),
Kategori ("tombol navigasi"),
DefaultValue ("<font face =" webdings ">: </font>"]]]
String publik lastpagetext
{{
mendapatkan
{{
objek obj = viewstate ["lastpagetext"];
Return (obj == null)? "<Font face =" webdings ">: </font>": (string) obj;
}
set {viewstate ["lastpageText"] = value;}
} /// <summary>
/// Dapatkan atau atur dalam jumlah tombol numerik yang ditampilkan pada saat yang sama di elemen navigasi halaman dalam kontrol <lihat cref = "aspnetpager"/>.
/// </summary>
[Browsable (true),
Deskripsi
Kategori ("tombol navigasi"),
DefaultValue (10)]
PUBLIK INT NUMERICBUTONCOUNT
{{
mendapatkan
{{
objek obj = viewstate ["numericbuttoncount"];
Return (obj == null) 10: (int) obj;
}
set {viewstate ["numericbuttoncount"] = value;}
} /// <summary>
/// Dapatkan atau tetapkan nilai yang menentukan apakah tombol yang dinonaktifkan ditampilkan.
/// </summary>
/// <lmarks>
/// Nilai ini digunakan untuk menentukan apakah tombol navigasi pagination dinonaktifkan ditampilkan. Jadilah tombol halaman terakhir akan dinonaktifkan, tombol yang dilarang tidak memiliki tautan, dan klik tombol tidak akan memiliki efek apa pun.
/// </petaran>
[Browsable (true),
Kategori ("tombol navigasi"),
Deskripsi ("Apakah akan menunjukkan tombol dinonaktifkan"),
DefaultValue (true)]
Public bool showdisabledButtons
{{
mendapatkan
{{
objek obj = viewstate ["showdisabledButton"];
Return (obj == null)?
}
mengatur
{{
Viewstate ["showdisabledButtons"] = nilai;
}
}
#Endregion
Tombol gambar #Region
/// <summary>
/// Dapatkan atau atur jalur file gambar saat menggunakan tombol gambar.
/// </summary>
[Browsable (true),
Kategori ("tombol gambar"),
Deskripsi ("Saat menggunakan tombol gambar, tentukan jalur file gambar"), "),),
DefaultValue (null)]
Imagepath string publik
{{
mendapatkan
{{
string imgpath = (string) viewState ["imagePath"];
if (imgpath! = null)
imgpath = this.rsolveUrl (imgpath);
Kembalikan imgpath;
}
mengatur
{{
string imgpath = value.trim ().
Viewstate ["imagePath"] = (imgpath.endswith ("/")? Imgpath: imgpath+"/";
}
}
/// <summary>
/// Dapatkan atau atur saat menggunakan tombol gambar, jenis gambar, seperti GIF atau JPG, nilai ini adalah nama akhiran dari file gambar.
/// </summary>
[Browsable (true),
Kategori ("tombol gambar"),
DefaultValue (". GIF"),
Deskripsi ("Saat menggunakan tombol gambar, jenis gambar, seperti GIF atau JPG, nilai ini adalah nama akhiran dari file gambar")]
ButtonMageExtent publik
{{
mendapatkan
{{
objek obj = viewstate ["ButtonImageExtent"];
Return (obj == null)? "Gif": (string) obj;
}
mengatur
{{
string ext = value.trim ();
Viewstate ["ButtonImageExtension"] = (ext.startswith (".")? Ext: ("."+Ext);
}
}
/// <summary>
/// Dapatkan atau atur string akhiran dari nama file gambar khusus untuk membedakan berbagai jenis tombol.
/// </summary>
/// <womerks> <note> Catatan: </not> Nilai ini bukan sufiks file, tetapi string yang ditambahkan ke nama gambar untuk membedakan file gambar yang berbeda, seperti ::
/// Saat ini ada dua set tombol, salah satunya "1" bisa "1f.gif", dan nama gambar dari "1" di set lainnya dapat menjadi "1n.gif", yang f dan dan yang f dan f dan yang dan N adalah ButtonImagenameExtension. </komentar>
[Browsable (true),
DefaultValue (null),
Kategori ("tombol gambar"),
Deskripsi ("akhiran dari" nama file gambar yang disesuaikan), seperti buttonimagenamexketency gambar "1f.gif" adalah "f" ")]]]]]]]]
PUBLIK PUBLIK BUTTONIMAGEENAMEEXTENSION
{{
mendapatkan
{{
Return (string) viewstate
}
mengatur
{{
ViewState ["ButtonImagenextension"] = value;
}
}
/// <summary>
/// Dapatkan atau atur nama gambar gambar dari tombol indeks halaman saat ini.
/// </summary>
/// <lmarks>
/// Ketika <lihat cref = "pagingbuttontype"/> diatur ke gambar, atribut ini memungkinkan Anda untuk mengatur karakter gambar gambar gambar yang digunakan oleh tombol indeks halaman saat ini, sehingga tombol indeks halaman saat ini dapat digunakan berbeda dari halaman lain dari halaman lain Tombol Indeks.
/// </petaran>
[Browsable (true),
DefaultValue (null),
Kategori ("tombol gambar"),
Deskripsi ("Nama Foto Faculture String dari Tombol Indeks Halaman Saat Ini")]
PUBLIK PUBLIK CPIBUTTONIMAGNEEXTENSION
{{
mendapatkan
{{
objek obj = viewstate
Return (obj == null)?
}
mengatur
{{
Viewstate ["cpibuttonimagenexension"] = nilai;
}
}
/// <summary>
/// Dapatkan atau atur halaman navigasi navigasi navigasi yang dinonaktifkan nama sufiks string.
/// </summary>
/// <lmarks>
/// Ketika <lihat cref = "pagingbuttontype"/> diatur ke gambar, nilai ini memungkinkan Anda untuk mengatur tombol navigasi halaman (termasuk halaman pertama, halaman sebelumnya, halaman sebelumnya, halaman sebelumnya, halaman sebelumnya, Halaman sebelumnya, string sufiks nama file gambar dari halaman berikutnya dan halaman terakhir dari halaman terakhir, sehingga tombol navigasi halaman yang dinonaktifkan dapat berbeda dari tombol navigasi halaman normal. Jika nilai ini tidak diatur, nilai default adalah <lihat cref = "buttonimageRextent"/>, yaitu, tombol navigasi halaman yang dinonaktifkan menggunakan gambar yang sama dengan tombol navigasi halaman normal.
/// </petaran>
[Browsable (true),
DefaultValue (null),
Kategori ("tombol gambar"),
Deskripsi ("Nama gambar volume string tombol navigasi halaman dinonaktifkan")]
Public String DisableDButtonimagenextension
{{
mendapatkan
{{
objek obj = viewstate
Return (obj == null)?
}
mengatur
{{
View -state
}
}
/// <summary>
/// Tentukan metode penyelarasan saat menggunakan tombol gambar.
/// </summary>
[Browsable (true),
keterangan
DefaultValue (ImageAgign.Baseline),
kategori ("tombol gambar")]]
Publik ImageAntign ButtonImageAlign
{{
mendapatkan
{{
objek obj = viewstate ["ButtonImageAlign"];
Return (obj == null)?
}
atur {viewState ["ButtonImageAlign"] = value;}
}
#Endregion
Paging #Region
/// <summary>
/// Dapatkan atau atur apakah akan mengaktifkan URL untuk melewati informasi pagination.
/// </summary>
/// <lmarks>
/// Aktifkan metode paging URL untuk lulus indeks halaman yang ingin diakses pengguna melalui URL.
/// Jadi setiap data dikembalikan ke nilai awal atau perlu diperoleh pada setiap paging. Gunakan metode paging URL tidak mendukung nilai atribut perubahan dinamis pada kontrol paging.
/// karena nilai atribut baru untuk sementara tidak dapat meneruskan URL ke halaman berikutnya.
/// </petaran>
/// <serus example> Contoh -contoh berikut menunjukkan cara menggunakan metode paging url ASPNetPager untuk membuat pagrid (menggunakan database akses):
/// <code> <!
/// <%@register tagprefix = "webdiyer" namespace = "wuqi.webdiyer" assembly = "aspnetpager"%>
/// <%@impor namespace = "system.data.oledb"%>
/// <%@ import namespace = "system.data"%>
/// <%@ halaman bahasa = "c#" debug = true%>
/// <html>
/// <head>
/// <title> Selamat datang di webdiyer.com </iteme>
/// <skrip runat = "server">
/// oledbconnection conn;
/// oledbCommand cmd;
/// void page_load (objek src, eventArgs e) {{
/// Conn = OLEDBConnection baru ("Provider = microsoft.jet.oledb.4.0; Sumber data ="+server.mappath ("Accept/aspnetpager.mdb");
/// if (! page.ispostback) {
/// cmd = new OLEDBCommand ("SELECT COUNT (NEWSID) dari WQNews", Conn);
// conn.open ();
/// pager.recordcount = (int) cmd.executescalal ();
// conn.close ();
/// binddata ();
///}
///}
///
/// void bindData () {{)
/// cmd = oledbCommand baru ("Pilih newsid, heading, source, addtime dari wqnews order dengan addTime design, conn); conn); conn); conn); conn); conn); conn); conn); conn) Conn);
/// oledbdataadapter adaptor = oledbdataadapter baru (cmd);
/// dataset ds = dataset baru ();
/// adapter.fill (DS, pager.pagesize*(pager.currentpageIndex-), pager.pagesize, "news");
/// dg.datasource = ds.tables ["news"];
/// dg.databind ();
///}
///
/// void changePage (objek src, pagechangedeventArgs e) {{
/// pager.currentpageIndex = e.newpageIndex;
/// binddata ();
///}
///
/// </script>
/// <meta http-equiv = "konten-bahasa" konten = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "umum" konten = "editplus">
/// <meta name = "penulis" content = "webdiyer ([email dilindungi])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <h2 align = "center"> aspnetpager paging contoh </h2>
/// <asp: datagrid id = "dg" runat = "server"
/// cellpadding = "4" align = "center"/>
///
/// <webdiyer: aspnetpager runat = "server" id = "pager"
/// Onpagechanged = "ChangePage"
/// horizontalalally = "center"
///
/// pageSize = "8"
/// showInputBox = "selalu"
/// SubmitButtonStyle = "Border: 1px Solid #000066; Tinggi: 20px; Lebar: 30px"
/// inputboxstyle = "Border: 1px #0000ff Solid; Text-Align: Center"
/// kirimbuttontext = "turn to"
/// urlpaging = "true"
/// urlpageIndexName = "pageIndex"/>
/// </form>
/// </body>
/// </html>
///]]> </code>
/// </example>
[Browsable (true),
kategori ("paging"),
DefaultValue (false),
Deskripsi ("Apakah akan menggunakan URL untuk meneruskan informasi pagination ke halaman")]
Urlpaging bool publik
{{
mendapatkan
{{
Mengembalikan urlpaging;
}
mengatur
{{
urlpaging = nilai;
}
}
/// <summary>
/// Dapatkan atau atur ketika metode paging URL diaktifkan, dan nama parameter indeks halaman untuk ditransmisikan dalam URL ada di URL.
/// </summary>
/// <lmarks>
/// Atribut ini memungkinkan Anda untuk menyesuaikan nama parameter indeks halaman untuk melewati indeks halaman transmisi URL untuk menghindari pengulangan dengan nama parameter yang ada.
/// <p> Nilai default atribut adalah "halaman", yaitu, ketika paging url, URL yang ditampilkan di bilah alamat browser mirip dengan: </p> http://www.webdiyer.com /aspnetpager/sampel/datagrid_url.aspx?
/// <p> Jika nilainya diubah menjadi "PageIndex", URL di atas akan menjadi: </p> <p> http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pageIndex = 2 </p>
/// </petaran>
[Browsable (true),
DefaultValue ("halaman"),
kategori ("paging"),
Deskripsi ("Ketika metode paging url diaktifkan, nama parameter indeks halaman untuk ditunjukkan dalam url")]]
UrlPageIndexName String Publik
{{
dapatkan {return urlpageIndexName;}
set {urlpageIndexName = value;}
}
/// <summary>
/// Dapatkan atau atur indeks halaman tampilan saat ini.
/// </summary>
/// <penok api> Gunakan atribut ini untuk menentukan halaman yang saat ini ditampilkan dalam kontrol ASPNETPAGER. Atribut ini juga digunakan untuk mengontrol halaman yang ditampilkan berdasarkan pemrograman.
/// <p> <b> Catatan: </b> Berbeda dari CurrentPageIndex dari Kontrol Datagrid, Properti SurrentPageIndex dari AspNetPager dimulai dari 1. </p> </kamerk>
[Readonly (true),
browsable (false),
Deskripsi ("indeks halaman tampilan saat ini"),
kategori ("paging"),
DefaultValue (1),
DesignerSerializationVisibility (DesignerserializationVisibility.hidden)]
Public Int CurrentPageIndex
{{
mendapatkan
{{
objek cpage = viewstate ["currentPageIndex"];
int pindex = (cpage == null)? 1: (int) cpage;
If (pindex> pagecount && pagecount> 0)
Mengembalikan PageCount;
lain jika (pindex <1)
Kembali 1;
Mengembalikan pindex;
}
mengatur
{{
int cpage = nilai;
if (cpage <1)
cpage = 1;
Lain jika (cpage> this.pagecount)
cpage = this.pagecount;
Viewstate ["currentPageIndex"] = cpage;
}
}
/// <summary>
/// Dapatkan atau atur jumlah total semua catatan yang perlu dipukuli.
/// </summary>
/// <lmarks>
/// Saat halaman dimuat untuk pertama kalinya, itu harus diberikan atribut ke semua jumlah total catatan paging dalam tabel data yang dikembalikan dari prosedur penyimpanan atau pernyataan SQL. Pada halaman pada halaman nilainya diperoleh dari ViewState saat kembali, sehingga menghindari akses ke database setiap kali pagination dihindari. AspnetPager menghitung jumlah total halaman yang diperlukan oleh semua data berdasarkan jumlah total data yang akan di -paged dan atribut <lihat cref = "halaman"/> pada paging, yaitu, nilai <lihat cref = "pagecount" />.
/// </petaran>
/// <sontohnya>
/// Contoh di bawah ini menunjukkan bagaimana jumlah total catatan yang dikembalikan dari pernyataan SQL ditetapkan ke atribut:
/// <p>
/// <code> <!
/// <html>
/// <head>
/// <title> Selamat datang di webdiyer.com </iteme>
/// <skrip runat = "server">
/// SQLConnection Conn;
/// sqlCommand cmd;
/// void page_load (objek src, eventargs e)
/// {
// conn = SQLConnection baru (configurationsettings.appsettings ["connstr"];
/// if (! page.ispostback)
/// {
/// cmd = SQLCommand baru ("Pilih Hitung (ID) dari News", Conn);
// conn.open ();
/// pager.recordcount = (int) cmd.executescalal ();
// conn.close ();
/// binddata ();
///}
///}
///
/// void binddata ()
/// {
/// cmd = sqlCommand baru ("getPagedNews", conn);
/// cmd.CommandType = commandType.StoredProcedure;
/// cmd.parameters.add ("@posgeIndex", pager.currentpageIndex);
/// cmd.parameters.add ("@pagesize", pager.pagesize);
// conn.open ();
/// datagrid1.datasource = cmd.executereader ();
/// datagrid1.databind ();
// conn.close ();
///}
/// void changepage (objek src, pagechangedeventargs e)
/// {
/// pager.currentpageIndex = e.newpageIndex;
/// binddata ();
///}
/// </script>
/// <meta http-equiv = "konten-bahasa" konten = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "umum" konten = "editplus">
/// <meta name = "penulis" content = "webdiyer ([email dilindungi])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: datagrid id = "datagrid1" runat = "server"/>
///
/// <webdiyer: aspnetpager id = "pager" runat = "server"
/// pageSize = "8"
/// numericbuttoncount = "8"
/// showcustominfosection = "sebelumnya"
/// showInputBox = "selalu"
/// cssclass = "mypager"
/// horizontalalally = "center"
/// Onpagechanged = "ChangePage"/>
///
/// </form>
/// </body>
/// </html>
///]]>
/// </code> </p>
/// <p> Kode prosedur penyimpanan yang digunakan dalam contoh ini adalah sebagai berikut: </p>
/// <code> <!
/// Buat Prosedur GetPagedNews
/// (@pagesize int,
@pageIndex int)
/// sebagai
/// atur nocount on
/// mendeklarasikan @indextable tabl
/// mendeklarasikan @pagelowerbound int
/// Deklarasikan @pageupperbound int
/// set @pagelowerbound = (@pageIndex-)*@pagesize
/// set @[Email Dilindungi] [Email Dilindungi]
/// atur rowcount @pageupperbound
/// Masukkan ke @Indextable (NID) Pilih ID dari pesanan berita dengan addTime desc
/// Pilih O.id, O.Title, O.Source, O.Addtime dari News
/// and t.id>@pagelowerbound and t.id<[email protected] order by t.id
/// set nocount off
/// PERGI
/// ]]>
/// </code>
/// </example>
[browsable(false),
description("要分页的所有记录的总数,该值须在程序运行时设置,默认值为225是为设计时支持而设置的参照值。"),
category("data"),
defaultvalue(225)]
public int recordcount
{{
mendapatkan
{{
object obj=viewstate["recordcount"];
return (obj==null)?0:(int)obj;
}
set{viewstate["recordcount"]=value;}
}
/// <summary>
/// 获取当前页之后未显示的页的总数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagesremain
{{
mendapatkan
{{
return pagecount-currentpageindex;
}
}
/// <summary>
/// 获取或设置每页显示的项数。
/// </summary>
/// <remarks>
/// 该值获取或设置数据呈现控件每次要显示数据表中的的数据的项数,aspnetpager根据该值和<see cref="recordcount"/> 来计算显示所有数据需要的总页数,即<see cref="pagecount"/>的值。</remarks>
/// <example>以下示例将<see cref="aspnetpager"/> 设置为允许每页显示8条数据:
/// <code>
/// <![cdata[
/// ...
/// <webdiyer:aspnetpager id="pager" runat="server" pagesize=8 onpagechanged="changepage"/>
/// ...
/// ]]></code></example>
[browsable(true),
description("每页显示的记录数"),
category("分页"),
defaultvalue(10)]
public int pagesize
{{
mendapatkan
{{
object obj=viewstate["pagesize"];
return (obj==null)?10:(int)obj;
}
mengatur
{{
viewstate["pagesize"]=value;
}
}
/// <summary>
/// 获取在当前页之后还未显示的剩余记录的项数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int recordsremain
{{
mendapatkan
{{
if(currentpageindex<pagecount)
return recordcount-(currentpageindex*pagesize);
return 0;}
}
/// <summary>
/// 获取所有要分页的记录需要的总页数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagecount
{{
get{return (int)math.ceiling((double)recordcount/(double)pagesize);}
}
#endregion
#region textbox and submit button
/// <summary>
/// 获取或设置页索引文本框的显示方式。
/// </summary>
/// <remarks>
/// 页索引文件框允许用户手式输入要访问的页的索引,当页数非常多时,显示页索引文本框非常方便用户跳转到指定的页,默认情况下,该文本框只有在总页数大于或等于<see cref="showboxthreshold"/> 的值时才显示,否则不显示,要想该文本框任何时候都显示,请将其值设为always,若希望任何时候都不显示,则应设为never。
///</remarks>
[browsable(true),
keterangan
category("文本框及提交按钮"),
defaultvalue(showinputbox.auto)]
public showinputbox showinputbox
{{
mendapatkan
{{
object obj=viewstate["showinputbox"];
return (obj==null)?showinputbox.auto:(showinputbox)obj;
}
set{viewstate["showinputbox"]=value;}
}
/// <summary>
/// 获取或设置应用于页索引输入文本框的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css类名")]
public string inputboxclass
{{
mendapatkan
{{
return (string)viewstate["inputboxclass"];
}
mengatur
{{
if(value.trim().length>0)
viewstate["inputboxclass"]=value;
}
}
/// <summary>
/// 获取或设置页索引输入文本框的css样式文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css样式文本")]
public string inputboxstyle
{{
mendapatkan
{{
return (string)viewstate["inputboxstyle"];
}
mengatur
{{
if(value.trim().length>0)
viewstate["inputboxstyle"]=value;
}
}
/// <summary>
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("页索引输入文本框前的文本内容字符串")]
public string textbeforeinputbox
{{
mendapatkan
{{
return (string)viewstate["textbeforeinputbox"];
}
mengatur
{{
viewstate["textbeforeinputbox"]=value;
}
}
/// <summary>
/// 获取或设置页索引文本输入框后的文本内容字符串值。
/// </summary>
[browsable(true),
defaultvalue(null),
category("文本框及提交按钮"),
description("页索引输入文本框后的文本内容字符串")]
public string textafterinputbox
{{
mendapatkan
{{
return (string)viewstate["textafterinputbox"];
}
mengatur
{{
viewstate["textafterinputbox"]=value;
}
}
/// <summary>
/// 获取或设置提交按钮上的文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue("go"),
description("提交按钮上的文本")]
public string submitbuttontext
{{
mendapatkan
{{
object obj=viewstate["submitbuttontext"];
return (obj==null)?"go":(string)obj;
}
mengatur
{{
if(value.trim().length>0)
viewstate["submitbuttontext"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
keterangan
public string submitbuttonclass
{{
mendapatkan
{{
return (string)viewstate["submitbuttonclass"];
}
mengatur
{{
viewstate["submitbuttonclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css样式。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于提交按钮的css样式")]
public string submitbuttonstyle
{{
mendapatkan
{{
return (string)viewstate["submitbuttonstyle"];
}
mengatur
{{
viewstate["submitbuttonstyle"]=value;
}
}
/// <summary>
/// 获取或设置自动显示页索引输入文本框的最低起始页数。
/// </summary>
/// <remarks>
/// 当<see cref="showinputbox"/> 设为auto(默认)并且要分页的数据的总页数达到该值时会自动显示页索引输入文本框,默认值为30。该选项当<see cref="showinputbox"/> 设为never或always时没有任何作用。
/// </remarks>
[browsable(true),
description("指定当showinputbox设为showinputbox.auto时,当总页数达到多少时才显示页索引输入文本框"),
category("文本框及提交按钮"),
defaultvalue(30)]
public int showboxthreshold
{{
mendapatkan
{{
object obj=viewstate["showboxthreshold"];
return (obj==null)?30:(int)obj;
}
set{viewstate["showboxthreshold"]=value;}
}
#endregion
#region custominfosection
/// <summary>
/// 获取或设置显示用户自定义信息区的方式。
/// </summary>
/// <remarks>
/// 该属性值设为left或right时会在分页导航元素左边或右边划出一个专门的区域来显示有关用户自定义信息,设为never时不显示。
/// </remarks>
[browsable(true),
description("显示当前页和总页数信息,默认值为不显示,值为showcustominfosection.left时将显示在页索引前,为showcustominfosection.right时将显示在页索引后"),
defaultvalue(showcustominfosection.never),
category("自定义信息区")]
public showcustominfosection showcustominfosection
{{
mendapatkan
{{
object obj=viewstate["showcustominfosection"];
return (obj==null)?showcustominfosection.never:(showcustominfosection)obj;
}
set{viewstate["showcustominfosection"]=value;}
}
/// <summary>
/// 获取或设置用户自定义信息区文本的对齐方式。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(horizontalalign.left),
description("用户自定义信息区文本的对齐方式")]
public horizontalalign custominfotextalign
{{
mendapatkan
{{
object obj=viewstate["custominfotextalign"];
return (obj==null)?horizontalalign.left:(horizontalalign)obj;
}
mengatur
{{
viewstate["custominfotextalign"]=value;
}
}
/// <summary>
/// 获取或设置用户自定义信息区的宽度。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(typeof(unit),"40%"),
description("用户自定义信息区的宽度")]
public unit custominfosectionwidth
{{
mendapatkan
{{
object obj=viewstate["custominfosectionwidth"];
return (obj==null)?unit.percentage(40):(unit)obj;
}
mengatur
{{
viewstate["custominfosectionwidth"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的级联样式表类名。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Keterangan
public string custominfoclass
{{
mendapatkan
{{
object obj=viewstate["custominfoclass"];
return (obj==null)?cssclass:(string)obj;
}
mengatur
{{
viewstate["custominfoclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的css样式文本。
/// </summary>
/// <value>字符串值,要应用于用户自定义信息区的css样式文本。</value>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
description("应用于用户自定义信息区的css样式文本")]
public string custominfostyle
{{
mendapatkan
{{
object obj=viewstate["custominfostyle"];
return (obj==null)?getstylestring():(string)obj;
}
mengatur
{{
viewstate["custominfostyle"]=value;
}
}
/// <summary>
/// 获取或设置在显示在用户自定义信息区的用户自定义文本。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Keterangan
public string custominfotext
{{
mendapatkan
{{
return (string)viewstate["custominfotext"];
}
mengatur
{{
viewstate["custominfotext"]=value;
}
}
#endregion
#region others
/// <summary>
/// 获取或设置一个值,该值指定是否总是显示aspnetpager分页按件,即使要分页的数据只有一页。
/// </summary>
/// <remarks>
/// 默认情况下,当要分页的数据小于两页时,aspnetpager不会在页面上显示任何内容,将此属性值设为true时,即使总页数只有一页,aspnetpager也将显示分页导航元素。
/// </remarks>
[browsable(true),
category("behavior"),
defaultvalue(false),
description("总是显示分页控件,即使要分页的数据只要一页")]
public bool alwaysshow
{{
mendapatkan
{{
object obj=viewstate["alwaysshow"];
return (obj==null)?false:(bool)obj;
}
mengatur
{{
viewstate["alwaysshow"]=value;
}
}
/// <summary>
/// 获取或设置由aspnetpager 服务器控件在客户端呈现的级联样式表(css) 类。
/// </summary>
[browsable(true),
description("应用于控件的css类名"),
category("appearance"),
defaultvalue(null)]
public override string cssclass
{{
get{return base.cssclass;}
mengatur
{{
base.cssclass=value;
cssclassname=value;
}
}
/// <summary>
/// 获取或设置一个值,该值指示aspnetpager 服务器控件是否向发出请求的客户端保持自己的视图状态,该属性经重写后不允许设为false。
/// </summary>
/// <remarks><see cref="aspnetpager"/> 服务器控件将一些重要的分页信息保存在viewstate中,当使用url分页方式时,虽然视图状态在分页过程中没有任何作用,但若当前页需要回发,则必须启用视图状态以便分页控件能在页面回发后获取回发前的分页状态;当通过页面回发(postback)的方式来分页时,要使aspnetpager正常工作,必须启用视图状态。
/// <p><note>该属性并不能禁止用户用<![cdata[<%@page enableviewstate=false%> ]]>页指令来禁用整个页面的视图状态,当使用此指令并且设置aspnetpager通过页面回发来分页时,aspnetpager因为无法获取保存的信息而不能正常工作。</note></p></remarks>
[browsable(false),
description("是否启用控件的视图状态,该属性的值必须为true,不允许用户设置。"),
defaultvalue(true),
category("behavior")]
public override bool enableviewstate
{{
mendapatkan
{{
return base.enableviewstate;
}
mengatur
{{
base.enableviewstate=true;
}
}
/// <summary>
/// 获取或设置当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。"),
defaultvalue("页数超出范围!"),
category("data")]
public string pageindexoutofrangeerrorstring
{{
mendapatkan
{{
object obj=viewstate["pageindexoutofrangeerrorstring"];
return (obj==null)?"页数超出范围!":(string)obj;
}
mengatur
{{
viewstate["pageindexoutofrangeerrorstring"]=value;
}
}
/// <summary>
/// 获取或设置当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。"),
defaultvalue("页索引无效!"),
category("data")]
public string invalidpageindexerrorstring
{{
mendapatkan
{{
object obj=viewstate["invalidpageindexerrorstring"];
return (obj==null)?"页索引无效!":(string)obj;
}
mengatur
{{
viewstate["invalidpageindexerrorstring"]=value;
}
}
#endregion
#endregion
#region control rendering logic
/// <summary>
/// 重写<see cref="system.web.ui.control.onload"/> 方法。
/// </summary>
/// <param name="e">包含事件数据的<see cref="eventargs"/> 对象。</param>
protected override void onload(eventargs e)
{
if(urlpaging)
{{
currenturl=page.request.path;
urlparams=page.request.querystring;
string pageindex=page.request.querystring[urlpageindexname];
int index=1;
mencoba
{
index=int.parse(pageindex);
}
menangkap {}
onpagechanged(new pagechangedeventargs(index));
}
kalau tidak
{
inputpageindex=page.request.form[this.uniqueid+"_input"];
}
base.onload(e);
}
/// <summary>
/// 重写<see cref="system.web.ui.control.onprerender"/>方法。
/// </summary>
/// <param name="e">包含事件数据的<see cref="eventargs"/> 对象。</param>
protected override void onprerender(eventargs e)
{
if(pagecount>1)
{
string checkscript="<script language="javascript">function docheck(el){var r=new regexp("^s*(d+)s*$");if(r.test(el.value)){if(regexp.$1<1||regexp.$1>"+pagecount.tostring()+"){alert(""+pageindexoutofrangeerrorstring+"");document.all['"+this.uniqueid+"_input'].select();return false;}return true;}alert(""+invalidpageindexerrorstring+"");document.all['"+this.uniqueid+"_input'].select();return false;}</script>";
if((showinputbox==showinputbox.always)||(showinputbox==showinputbox.auto&&pagecount>=showboxthreshold))
{
if(!page.isclientscriptblockregistered("checkinput"))
page.registerclientscriptblock("checkinput",checkscript);
string script="<script language="javascript" > <!-- nfunction buildurlstring(key,value){ var _key=key.tolowercase(); var prms=location.search; if(prms.length==0) return location.pathname+"?"+_key+"="+value; var params=prms.substring(1).split("&"); var newparam=""; var found=false; for(i=0;i<params.length;i++){ if(params[i].split("=")[0].tolowercase()==_key){ params[i]=_key+"="+value; found=true; break; } } if(found) return location.pathname+"?"+params.join("&"); else return location+"&"+_key+"="+value; }n//--> </script>";
if(!page.isclientscriptblockregistered("buildurlscript"))
page.registerclientscriptblock("buildurlscript",script);
}
}
base.onprerender(e);
}
/// <summary>
/// Rewrite the <see Cref = "System.web.ui.webControls.webControl.addattributestorender" method. Add the html attributes and styles that need to be presented to the specified <see Cref = "SYSTEM.WEB.HTMLTEXTEXT writer " />
/// </summary>
/// <param name="writer"></param>
protected override void addattributestorender(htmltextwriter writer)
{
if(this.page!=null)
this.page.verifyrenderinginserverform(this);
base.addattributestorender(writer);
}
/// <summary>
///重写<see cref="system.web.ui.webcontrols.webcontrol.renderbegintag"/> 方法,将<see cref="aspnetpager"/> 控件的html 开始标记输出到指定的<see cref="system.web.ui.htmltextwriter"/> 编写器中。
/// </summary>
///<param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
public override void renderbegintag(htmltextwriter writer)
{
bool showpager=(pagecount>1||(pagecount<=1&&alwaysshow));
writer.writeline();
writer.write ("<! ------------------------------------------- -------------------------------------------------- -----------")
writer.write("aspnetpager v4.3 start");
writer.writeline ("--------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------
writer.write ("<! ------------------------------------------- -------------------------------------------------- ------------------");
writer.write("copyright:2003 webdiyer(www.webdiyer.com)");
writer.write(" ---------------------");
writer.writeline(">");
base.renderbegintag(writer);
if(!showpager)
{
writer.write("<!-----因为总页数只有一页,并且alwaysshow属性设为false,aspnetpager不显示任何内容,若要在总页数只有一页的情况下显示aspnetpager,请将alwaysshow属性设为true!");
writer.write("----->");
}
if((showcustominfosection==showcustominfosection.left||showcustominfosection==showcustominfosection.right)&&showpager)
{
writer.addattribute(htmltextwriterattribute.width,"100%");
writer.addattribute(htmltextwriterattribute.style,getstylestring());
if(height!=unit.empty)
writer.addstyleattribute(htmltextwriterstyle.height,height.tostring());
writer.addattribute(htmltextwriterattribute.border,"0");
writer.addattribute(htmltextwriterattribute.cellpadding,"0");
writer.addattribute(htmltextwriterattribute.cellspacing,"0");
writer.renderbegintag(htmltextwritertag.table);
writer.renderbegintag(htmltextwritertag.tr);
writecellattributes(writer,true);
writer.renderbegintag(htmltextwritertag.td);
}
}
/// <summary>
///重写<see cref="system.web.ui.webcontrols.webcontrol.renderendtag"/> 方法,将<see cref="aspnetpager"/> 控件的html 结束标记输出到指定的<see cref="system.web.ui.htmltextwriter"/> 编写器中。
/// </summary>
///<param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
public override void renderendtag(htmltextwriter writer)
{{
if((showcustominfosection==showcustominfosection.left||showcustominfosection==showcustominfosection.right)&&(pagecount>1||(pagecount<=1&&alwaysshow)))
{
writer.renderendtag();
writer.renderendtag();
writer.renderendtag();
}
base.renderendtag(writer);
writer.writeline();
writer.write("<!------------------------------- ");
writer.write("aspnetpager v4.3 end");
writer.write(" --------------------------------");
writer.writeline(">");
writer.writeline();
}
/// <summary>
/// Rewrite the <see Cref = "System.web.ui.webControls.webControl.RenderContents" method to present the content of the control to the specified <see cref = "System.web.ui.htmlTextWriter"/> In the perangkat.
/// </summary>
/// <param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
protected override void rendercontents(htmltextwriter writer)
{
if(pagecount<=1&&!alwaysshow)
Kembali;
if(showcustominfosection==showcustominfosection.left)
{
writer.write(custominfotext);
writer.renderendtag();
writecellattributes(writer,false);
writer.addattribute(htmltextwriterattribute.class,cssclass);
writer.renderbegintag(htmltextwritertag.td);
}
int midpage=(int)((currentpageindex-1)/numericbuttoncount);
int pageoffset=midpage*numericbuttoncount;
int endpage=((pageoffset+numericbuttoncount)>pagecount)?pagecount:(pageoffset+numericbuttoncount);
this.createnavigationbutton(writer,"first");
this.createnavigationbutton(writer,"prev");
if(showpageindex)
{
if(currentpageindex>numericbuttoncount)
createmorebutton(writer,pageoffset);
for(int i=pageoffset+1;i<=endpage;i++)
{
createnumericbutton(writer,i);
}
if(pagecount>numericbuttoncount&&endpage<pagecount)
createmorebutton(writer,endpage+1);
}
this.createnavigationbutton(writer,"next");
this.createnavigationbutton(writer,"last");
if((showinputbox==showinputbox.always)||(showinputbox==showinputbox.auto&&pagecount>=showboxthreshold))
{
writer.write(" ");
if(textbeforeinputbox!=null)
writer.write(textbeforeinputbox);
writer.addattribute(htmltextwriterattribute.type,"text");
writer.addstyleattribute(htmltextwriterstyle.width,"30px");
writer.addattribute(htmltextwriterattribute.value,currentpageindex.tostring());
if(inputboxstyle!=null&&inputboxstyle.trim().length>0)
writer.addattribute(htmltextwriterattribute.style,inputboxstyle);
if(inputboxclass!=null&&inputboxclass.trim().length>0)
writer.addattribute(htmltextwriterattribute.class,inputboxclass);
if(pagecount<=1&&alwaysshow)
writer.addattribute(htmltextwriterattribute.readonly,"true");
writer.addattribute(htmltextwriterattribute.name,this.uniqueid+"_input");
string scriptref="docheck(document.all['"+this.uniqueid+"_input'])";
string postref="if(event.keycode==13){if("+scriptref+")__dopostback('"+this.uniqueid+"',document.all['"+this.uniqueid+"_input'].value);else{event.returnvalue=false;}}";
string keydownscript="if(event.keycode==13){if("+scriptref+"){even
csover 发表于:2006.07.21 08:46 ::分类: ( asp.net ) ::阅读:(464次) :: 评论(0) :: 引用(0)
2006 年07 月20日, 星期四
一个简单的分页控件
采用datagrid的默任的分页方式分页,后来发现对于大的数据量速度很慢,net进程占用系统资源也很大,后来写了个分页的存储过程,每次取数据都只取当前页的,分页是分好了,但是发现翻页就没那么方便了,于是自己写了个简单的分页控件,代码如下(编译以后直接形成dll就可以用)。
sample code:
menggunakan sistem;
menggunakan system.web.ui;
menggunakan system.web.ui.webControls;
using system.componentmodel;
namespace pageinfocontrol
{
/// <summary>
///webcustomecontrol1的摘要说明
/// </summary>
[defaultproperty('totalrecord'),toolboxdata('<{0}:pageinfo runat=server></{0}:pageinfo>')]
public class pageinfo:system.web.ui.webcontrols.webcontrol,ipostbackeventhandler
{
#region construct method
/// <summary>
///构造函数
/// </summary>
public pageinfo():base(htmltextwritertag.div)
{{
}
#endregion
#region variables and constants
public event eventhandler changepageclick;
private string _barbackgroudcolor='#f1f1f1';
private string _barlinkcolor='navy';
private string _barcurrentcolor='#eeeeee';
private int _totalrecord=0;
private int _totalpage=0;
private int _currentpageindex=1;
private int _itemsize=10;
#endregion
#region properties
[description('分页条背景色'),bindable(true),category('appearance'),defaultvalue('#f1f1f1')]
public string barbackgroundcolor
{
get{return _barbackgroundcolor;}
set{_barbackgroundcolor=value;}
}
[description('分页条带链接数字颜色'),bindable(true),category('appearance'),defaultvalue('navy')]
public string barlinkcolor
{
get{return _barlinkcolor;}
set{_barlinkcolor=value;}
}[description('分页条当前页数字颜色'),bindable(true),category('appearance'),defaultvalue('#eeeeee')]
public string barcurrentcolor
{
get{return _barcurrentcolor;}
set{_barcurrentcolor=value;}
} [description('总记录数'),bindable(false),category('behavior'),defaultvalue(0)]
public int totalrecord
{
get{return _totalrecord;}
mengatur
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c)
{
_totalrecord=0;
Merusak;
}
_totalrecord=value;
}
} [description('每页显示记录数'),bindable(true),category('behavior'),defaultvalue(0)]
public int pagesize
{
get{return _pagesize;}
mengatur
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_pagesize=0;
Merusak;
}
}
_pagesize=value;
}
}[description('总页数'),bindable(true),category('behavior'),defaultvalue(0)]
public int totalpage
{{
get{return _totalpage;}
}[description('数字规格'),bindable(true),category('behavior'),defaultvalue(10)]
public int itemsize
{
get{return _itemsize;}
mengatur
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_itemsize=10;
Merusak;
}
}
_itemsize=value;
}
}[description('当前页值'),bindable(true),category('behavior'),defaultvalue(1)]
public int currentpageindex
{
get{return _currentpageindex;}
set{_currentpageindex=value;}
}
#endregion
//定义div的样式
protected override void addattributestorender(htmltextwriter writer)
{
writer.addstyleattribute('white-space','nowrap');
writer.addstyleattribute('padding-top','2px');
writer.addstyleattribute('padding-bottom',2px');
writer.addstyleattribute('width',width.tostring());
writer.addstyleattribute('height',height.tostring());
base.addattributestorender(writer);
}
protected virtual void onpagechangeclick(eventargs e)
{
if(changepageclick!=null)
{{
changepageclick(this,e);
}
} public void raisepostbackevent(string eventargument)
{
int pageindex=int.parse(eventargument);
this._currentpageindex=pageindex;
onpagechangeclick(new eventargs());
}
/// <summary>
///将此控件呈现给指定的输出参数
/// </summary>
///<param name='output'>要写出到的html编写器</param>
protected override void rendercontents(htmltextwriter output)
{this._totalpage=((this.totalrecord/pagesize)*this.pagesize==this.totalrecord)?(this.totalrecord/this.pagesize):((this.totalrecord/this.pagesize)+1);
int beginrecord=(this.currentpageindex-1)*this.pagesize+1;
int endrecord=this.currentpageindex*this.pagesize;
string pageinfo='[共<font color=#cc0000>'+this.totalpage.tostring()+'</font>页/当前第<font color=#cc0000>'+this.currentpageindex.tostring()+'</font>页共<font color=#cc0000>'+totalrecord.tostring()+'</font>条记录,当前记录数<font color=#cc0000>'+begingrecord.tostring()+'</font>到<font color=#cc0000>'+endrecord.tostring()+'</font>]';
string pageliststr='';
string pageindexcolor='#0000c0';
int singlenumber=this.totalpage-(totalpage/itemsize)*itemsize; //得到分页后的尾数(比如:总共58页,按10页规格显示,则尾数为8)
int intpageformax=(this.currentpageindex-1)/itemsize;
int minint=(1+itemsize*intpageformax);
int maxint=((intpageformax+1)*itemsize)>totalpage?totalpage:((intpageformax+1)*itemsize);
if(this.totalrecord==0||this.totalpage==0)
{
pageliststr='<font color='+pageindexcolor+'>0</font>';
pageliststr=pageliststr+'[共<font color=#cc0000>0</font>页/当前第<font color=#cc0000>0</font>页共<font color=#cc0000>0</font>条记录,当前记录数<font color=#cc0000>0</font>到<font color=#cc0000>0</font>]';
output.write(pageliststr);
}
kalau tidak
{
if(this.totalpage<=this.itemsize)
{
for(int i=1;i<=totalpage;i++)
{
pageindexcolor=currentpageindex==i?'#cc0000':'#0000c0';
if(currentpageindex==i)
pageliststr=pageliststr+'<a title='当前为第['+i+']页' href='#' id=''+this.uniqueid+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
kalau tidak
pageliststr=pageliststr+'<a title='点击转到第['+i+']页' id=''+this.uniqueid+'' href=' javascript:'+page.getpostbackeventreference(this,i.tostring())+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
}
pageliststr=pageliststr==''?'<font color='+pageindexcolor+'>0</font>':pageliststr;
pageliststr=pageliststr+''+pageinfo;
output.write(pageliststr);
}
kalau tidak
{
for(int i=minint;i<=maxint;i++)
{
pageindexcolor=currentpageindex==i?'#cc0000':'#0000c0';
if(currentpageindex==i)
pageliststr=pageliststr+'<a title='当前为第['+i+']页' href='#' id=''+this.uniqueid+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
kalau tidak
pageliststr=pageliststr+'<a title='点击转到第['+i+']页' id=''+this.uniqueid+'' href=' javascript:'+page.getpostbackeventreference(this,i.tostring())+''><font color='+pageindexcolor+'>'+i.tostring()+'</font></a>';
}
//当当前页数小于itemsize且总的页数大于itemsize时
if(currentpageindex<=itemsize && totalpage>itemsize)
{{
pageliststr=pageliststr+'<a id=''+this.uniqueid+'' title='点击转到第['+system.convert.tostring(itemsize+1)+']页' href=' javascript:'+page.getpostbackeventreference(this.system.convert.tostring(itemsize+1))+''>>></a>';
//当当前页数大于itemsize,且总的页数减去当前页数大于等于尾数值页数时
if(this.currentpageindex>itemsize && (totalpage-this.currentpageindex)>=singlenumber)
{
int multiminpageindex=(intpageformax*itemsize);
int multimaxpageindex=((intpageformax+1)*itemsize)+1;
pageliststr='<a id=''+this.uniqueid+'' title='点击转到第['+multiminpageindex+']页' href=' javascrcipt:'+page.getpostbackeventreference(this.multiminpageindex.tostring())+''><<</a>'+pageliststr.trim()+'<a id=''+this.uniqueid+'' title='点击转到第['+multimaxpageindex+']页' href=' javascript:'+page.getpostbackeventreference(this.multimaxpageindex.tostring())+''>>></a>';
}
//当当前页数大于itemsize,且总的页数减去当前页数大于等于尾数值页数时
if(currentpageindex>10 && (totalpage-currentpageindex)<singlenumber)
{
int multiminpageindex=(intpageformax * itemsize);
pageliststr='<a id=''+this.uniqueid+'' title='点击转到第['+multiminpageindex+']页' href=' javascript:'+page.getpostbackeventreference(this,multiminpageindex.tostring ())+''><<</a>'+pageliststr.trim();
}
pageliststr=pageliststr==''?'<font color='+pageindexcolor+'>0</font>':pageliststr;
pageliststr=pageliststr+''+pageinfo;
output.write(pageliststr);
}
}
base.rendercontents(output);
}
}
}
控件中有几个相关的属性,在使用的时候,只需要指定:totalrecord(总记录数)、pagesize(每页的数据记录数)、currentpageindex(当前页面值)、itemsize(分页条显示页面值的规格)
控件中有个changepageclick事件,可以利用“控件id.currentpageindex”属性来获取当前页面值。
注册会员,创建你的web开发资料库,