// Dieser Quellcode dient nur zum Lernreferenz, nicht für kommerzielle Zwecke;
// Wenn Sie die Steuerung ändern und erneut verwenden müssen, behalten Sie die Urheberrechtsinformationen des vollständigen Quellcodes bei!
// Informationen über Steuerungsteuerung und neue Kontrollveröffentlichungsinformationen finden Sie unter www.webdiyer.com.
mit System verwenden;
mit System.io;
mit System.Web;
mit System.web.ui;
Verwenden von System.Web.Ui.Webcontrols;
mit System.web.ui.htmlControls;
Mit System.Collections.Specialized;
mit System.text;
mit System.comPonentModel;
Mit System.comPonentmol.design;
mit System.Collections;
Namespace Wuqi.Webdiyer
{{{{
#Region ASPNetPager Serversteuerung
#Region Control Beschreibung und Beispiel
/// <summary>
/// für Server -Steuerelemente für Datenpagingdaten in der Webanwendung von ASP.NET.
/// </summary>
/// <bemerkungen> Im Gegensatz zum DataGrid -Steuerelement zeigt der ASPNETPager -Paging -Steuerelement keine Daten an, sondern nur das Seitennavigationselement. Diese Steuerung kann die DataGrid-, Datalist-, Repeater- und benutzerdefinierten Steuerelemente mit SQL -Speicherverfahren ausüben. groß!
/// <p> ASPNETPAGER 2.0 Neu hinzugefügt die Funktion von Paging durch die URL, mit der Besucher die entsprechende URL direkt eingeben können, um auf eine Seite zuzugreifen, und die Suchmaschine kann auch jede Seite direkt abrufen. </p>
/// <p> Um das ASPNETPager -Paging -Steuerelement zu verwenden, muss es zumindest das Attribut <siehe cref = "recordCount"/> das Verarbeitungsprogramm des <siehe cref = "pagechanged"/> angeben und schreiben.
/// <siehe CREF = "RecordCount"/> Das Attribut gibt die Gesamtzahl aller Daten an, die in den Paging aufgetragen werden sollen.
/// Wenn das Programm für das Ereignisverarbeitung nicht angegeben und geschrieben wird, wenn der Benutzer auf das Seitennavigationselement oder den Seitenindex für Hand -Style -Eingabetiefeln klickt und die Seite mit dem Handte -Index -Feld übermittelt und die Seite übermittelt wird .
/// Die Paging -Methode der ASPNETPager -Steuerung ist im Grunde genommen der von DataGrid, dh in seinem <siehe cref = "pagechanged"/> Ereignisverarbeitungsprogramm das <siehe CREF = "pagechangeDeVentargs" von <siehe cref = siehe cref = "PagechangeDeVentArgs.NewPageIndex"/> Der Wert wird dem <siehe cref = "currentPageIndex"/> Attribut von <siehe cref = "currentPageIndex"/> zugeordnet und dann die neuen Daten- und Datenanzeigen -Steuerelemente erneut. </p> </Anmerkungen>
/// <Beispiel> Die folgenden Beispiele zeigen, wie ASPNETPAGER zur Seite des Datagrids verwendet wird.
/// <code> <!
/// <%@ page Language = "C#"%>
/// <%@ importieren namespace = "system.data"%>
/// <%@importieren namespace = "system.data.sqlclient"%>
/// <%@importieren namespace = "System.Configuration"%>
/// <%@Register Tagprefix = "WebDiyer" Namespace = "Wuqi.webdiyer" Assembly = "ASPNetPager"%>
/// <html>
/// <kopf>
/// <title> Willkommen bei WebDiyer.com </title>
/// <script runat = "server">
/// sqlConnection conn;
/// Sqlcommand CMD;
/// void page_load (Objekt SRC, EventArgs E)
/// {
// conn = new SQLConnection (configurationssettings.Appsettings ["connstr"];
/// if (! page.ispostback)
/// {
/// cmd = new SQLCommand ("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 = new SQLCommand ("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 = "Aufzeichnung insgesamt: <font color =" blue "> <b>"+pager.recordCount.toString ()+"</font>" ";
/// pager.custominfotext+= "Gesamtseitennummer: <font color =" blue "> <b>"+pager.pageCount.toString ()+"</font>" ";
/// pager.custominfotext+= "Aktuelle Seite: <font color =" rot "> <b>"+pager.currentPageIndex.toString ()+"</b> </font>"
///}
/// void Changepage (Objekt SRC, PagechangeDeVentArgs E)
/// {
/// Pager.CurrentPageIndex = e.NewpageIndex;
/// Binddata ();
///}
/// </script>
/// <meta http-equiv = "content-sprang" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "allgemeine" content = "editplus">
/// <meta name = "Author" content = "webDiyer ([E -Mail geschützt])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "Form1">
/// <ASP: datagrid id = "datagrid1" runat = "server"/>
/// <webdiyer: ASPNetPager id = "Pager"
/// Runat = "Server"
/// PageSize = "8"
/// numericButtonCount = "8"
/// showcustominfosection = "links"
/// Pagingbuttonspacing = "0"
/// ShowInputbox = "Immer"
/// CSSSCLASS = "MyPager"
/// Horizontalalal = "Right"
/// OnpaGechanged = "ChangePage"
/// subjektbuttonText = "wenden Sie sich an"
/// numericButtonTextFormatstring = "[{0}]"/>
/// </form>
/// </body>
/// </html>
///]]>
/// </code>
/// <p> Die in diesem Beispiel verwendete SQL -Serverspeicherverfahren: </p>
/// <code>
/// <!
/// Create Procedure GetNews
/// (@pagesize int,
/// @pageIndex int,
@Docount bit)
/// als
/// Nocount auf festlegen
/// if (@docount = 1)
/// Wählen Sie die Anzahl (ID) aus Nachrichten aus
/// anders
/// beginnen
/// @Intextable Table deklarieren
/// @pagelowerBound int deklarieren
/// Declare @pageupperbound int
/// set @pagelowerBound = (@pageIndex-)*@pageSize
/// @[E -Mail geschützt] [E -Mail geschützt]
/// RowCount @pageupperbound einstellen
/// In @Intextable (NID) einfügen ID aus News Order By Addtime Desc
/// Wählen Sie O.id, O.Source, O.Title, O.Addtime aus Nachrichten
/// und t.id> @pageElowerbound und T.id <= @pageupperbound Order von T.ID
/// Ende
/// Nocount abstellen
/// GEHEN
///]]>
/// </code> </Beispiel>
#Endregion
[DefaultProperty ("PageSize")]]]
[DefaultEvent ("Pagechanged")]
[Parsechildrn (Falsch)]
[Persistchildren (falsch)]
[Beschreibung ("" Paginationskontrolle für ASP.NET -Webanwendungen ")]]]]]]]]]]]]]
[Designer (Typof (PagerDesigner)]]]
[ToolboxData (<{0}: ASPNETPAGER RUNAT = Server> </{0}: ASPNETPAGER> ")]
Öffentliche Klasse ASPNETPAGER: Panel, InamingContainer, IpostbackeventHandler, Ipostbackdatahandler
{{{{
Private String -CSSCASSNAME;
Private String urlpageIndexname = "Seite";
Private bool urlpaging = false;
Private String InputPageIndex;
Private String currenturl = null;
Private nameValuecollection urlparams = null;
/// einen Wert abrufen oder festlegen.
/// </summary>
[Browsable (wahr),
Kategorie ("Navigationschaltfläche"), defaultValue (true), Beschreibung ("Gibt an, wann die Maus auf der Navigationstaste bleibt, ist die Eingabeaufforderung für Anzeigetool"]]]]]]]]]]
Öffentliches Bool zeigtenApationTooltip
{{{{
erhalten
{{{{
Object OBJ = ViewState ["zeigtenVigationStooltip"];
Return (obj == null)?
}
Satz
{{{{
ViewState ["zeigingAvationToolTip"] = Wert;
}
} /// <summary>
/// das Navigationstastwerkzeug abrufen oder festlegen, um das Textformat aufzurufen.
/// </summary>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
DefaultValue ("Wenden Sie sich an Seite Nr. {0}"),
Beschreibung ("Seitennavigationstastwerkzeuge Erinnerungstextformat")]]]]]
Öffentliche Saite
{{{{
erhalten
{{{{
Objekt obj = viewState ["NavigationToolTipTextFormatString"];
Return (obj == null)?
}
Satz
{{{{
String tip = Wert;
if.trim ().
TIP = "{0}";
ViewState
}
} /// <summary>
/// einen Wert abrufen oder festlegen.
/// </summary>
/// <lmarks>
/// Bei der Festlegung dieses Wertes auf true und nicht die Bildschaltfläche der Bildung wird der Wert der Seitenindex -Schaltfläche 1, 2, 3 usw. durch chinesische Zeichen zuerst, zwei und drei ersetzt.
/// </Anmerkungen>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
DefaultValue (falsch),
Beschreibung ("Ob die Schaltfläche" Seitenindexwert "zuerst, zuerst, zweiten und dritten durch chinesische Zahlen ersetzt wird"]]]]]
Öffentliche Bool ChinesepageIndex
{{{{
erhalten
{{{{
Objekt obj = viewState ["ChineSepageIndex"];
Return (obj == null)?
}
Satz
{{{{
ViewState ["ChineSepageIndex"] = Wert;
}
} /// <summary>
/// das Anzeigeformat des Textes auf der Schaltfläche Number Navigation abrufen oder festlegen.
/// </summary>
/// <wert>
/// String, Geben Sie das Anzeigeformat des Textes auf dem Seitenindexwert der Seite an, der Standardwert ist <siehe cref = "String.Empty"/>, dh die Eigenschaft ist nicht festgelegt. </value>
/// <lmarks>
/// NumericButtonTextFormatString -Eigenschaften verwenden, um das Anzeigeformat der indexierten Wertschaltfläche anzugeben.
/// Wenn der Wert auf "[{0}]" festgelegt ist, wird der Indextext als: [1] [2] [3] ... den Wert auf "-{0}-" festgelegt. und dann den Indextext auf: -1--2-2-3- ...
/// </Anmerkungen>
[Browsable (wahr),
DefaultValue ("") ,,
Kategorie ("Navigationstaste"),
Beschreibung ("Format des Textes auf der Schaltfläche" Page Index Numerical ")]]]
Public String numericButtonTextFormatString
{{{{
erhalten
{{{{
Objekt obj = viewState
Return (obj == null)?
}
Satz
{{{{
ViewState ["numericButtonTextextFormatring"] = Wert;
}
} /// <summary>
/// Die Schaltfläche "Paging Navigation" abrufen oder festlegen, auch wenn Text noch ein Bild ist.
/// </summary>
/// <lmarks>
/// Um die Bildschaltfläche zu verwenden, müssen Sie die folgenden Bilder vorbereiten: zehn Werte von 0 bis 9 (wenn ShowPageIndex auf true eingestellt ist), der ersten Seite, der vorherigen Seite, der nächsten Seite, der letzten Seite und mehr Immer mehr und mehr Seite (...) fünf Schaltflächen Bilder (wenn Showfirstlast und ShowPrevnext auf wahr sind),
/// Wenn die numerische Schaltfläche des aktuellen Seitenindex von anderen Seitenindex -numerischen Schaltflächen unterschieden werden muss, müssen Sie das Schaltfläche Bild des aktuellen Seitenindex vorbereiten.
/// Wenn sich das Bild der ersten Seite, die letzte Seite, die nächste Seite und die letzte Seite von der normalen Schaltfläche unterscheidet, müssen Sie die Bilder dieser vier Schaltflächen im deaktivierten Status vorbereiten.
/// <p> <b> Die Namensregeln der Bilddatei sind wie folgt: </b> </p>
/// <p> Von 0 bis 9 zehn numerische Schaltflächen muss das Bild "Value+buttonImagenameExtexexenses+buttonImageExtentation" bezeichnet werden.
/// ButtonImageExtenting ist der Suffix -Name der Bilddatei, wie .gif oder .jpg usw., alle Bild -Dateitypen, die im Browser angezeigt werden können. Beispielsweise kann die Bilddatei des Seitenindex "1" "1.Gif" oder "1.JPG" bezeichnet werden.
/// Wenn Sie zwei oder mehr Sätze von Bilddateien haben, können Sie verschiedene Sätze von Bildernsätzen unterscheiden, indem Sie den Schaltfläche "ButtonIMAGENAMEEXTENT) angeben. "1.GIF". bald. </p>
/// <p> Die Bilddatei der ersten Seite beginnt mit "First". Ob die ButtonImagenamexketnsion die ButtonImagenAneextension verwendet, hängt von den Einstellungen der numerischen Taste ab und ob es weitere Bilder gibt. </p>
/// </Anmerkungen>
/// <Beispiel>
/// Das folgende Beispiel -Fragment -Beispiel, wenn die Schaltfläche Bild verwendet wird:
/// <p>
/// <code> <!
/// <webDiyer: ASPNetPager runat = "Server"
/// id = "pager1"
/// OnpaGechanged = "ChangePage"
/// PagingButtonType = "Bild"
/// ImagePath = "Bilder"
/// ButtonImagenAneextent = "N"
/// DisabledButtonImagenexextension = "G"
/// buttonImageextent = "gif"
/// CpibuttonimagenameExension = "R"
/// Pagingbuttonspacing = 5/>
///]]>
/// </code>
/// </p>
/// </Beispiel>
[Browsable (wahr),
DefaultValue (pagingbuttonType.text),
Kategorie ("Navigationstaste"),
Beschreibung
Public PagingButtonType PagingButtisepe
{{{{
erhalten
{{{{
Objekt obj = viewState
Return (obj == null)?
}
Satz
{{{{
ViewState
}
} /// <summary>
/// Erhalten oder festlegen den Typ der numerischen Navigationstaste, die nur dann gültig ist, wenn der PagingButtonType auf das Bild eingestellt ist.
/// </summary>
/// <lmarks>
/// Wenn Sie das PagagingButtonType auf das Bild festlegen, können Sie den Wert auf Text festlegen, wodurch die Schaltfläche "Seitende Index" den Text anstelle der Bildschaltfläche für die Seite "Seitenindex" verwendet wird, wenn die Schaltfläche "Seitenindex" verwendet wird. .
/// </Anmerkungen>
[Browsable (wahr),
DefaultValue (pagingbuttonType.text),
Kategorie ("Navigationstaste"),
Beschreibung ("Typ der" Seitennavigation Zumerische numerische Schaltfläche ")]]]]]]]]
public pagingbuttonType numericbuttonType
{{{{
erhalten
{{{{
Objekt obj = viewState
Return (obj == null)?
}
Satz
{{{{
ViewState ["numericButtonType"] = Wert;
}
} /// <summary>
/// den Typ der ersten Seite, der letzten Seite, der nächsten Seite und der letzten Seite abrufen oder festlegen.
/// </summary>
/// <lmarks>
/// Wenn Sie das PagagingButtonType auf Bild einstellen, möchten Sie das Bild nicht für die erste, nächste Seite, nächste Seite und letzte Seite verwenden, können Sie den Wert auf Text festlegen, der die vorherigen vier Schaltflächen auf dem vorherigen erstellt Vier Schaltflächen verwenden Text anstelle der Bildschaltfläche.
/// </Anmerkungen>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
DefaultValue (pagingbuttonType.text),
Beschreibung
Öffentliche PagagernbuttonType
{{{{
erhalten
{{{{
Objekt obj = viewState ["NavigationButtonType"];
Return (obj == null)?
}
Satz
{{{{
ViewState ["NavigationButtonType"] = Wert;
}
} /// <summary>
/// Die Schaltfläche "mehr Seiten" (...) abrufen oder festlegen, die nur dann gültig ist, wenn der PagingButtonType auf das Bild eingestellt ist.
/// </summary>
/// <lmarks>
/// Wenn Sie das PagagingButtonType auf ein Bild setzen, aber nicht mehr Seiten (...), die Bilder verwenden möchten, können Sie diesen Wert auf Text festlegen, wodurch mehr Seitenschaltflächen anstelle der Bildschaltfläche verwendet werden.
/// </Anmerkungen>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
DefaultValue (pagingbuttonType.text),
Beschreibung ("Mehr Seiten" (...) Schaltetyp ")]]
Öffentliche PagagingButtonType MoreButtonpe
{{{{
erhalten
{{{{
Objekt obj = viewState ["moreButtisepe"];
Return (obj == null)?
}
Satz
{{{{
ViewState ["moreButtisepe"] = Wert;
}
} /// <summary>
/// den Abstand zwischen der Paging -Navigationstaste abrufen oder festlegen.
/// </summary>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
DefaultValue (Typof (Einheit), "5px"),
Beschreibung
öffentliche Einheit Pagingbuttonspacing
{{{{
erhalten
{{{{
Objekt obj = viewState ["pagagingbuttonspacing"];
Return (OBJ == NULL)?
}
Satz
{{{{
ViewState ["pagagingbuttonspacing"] = Wert;
}
} /// <summary>
/// einen Wert abrufen oder festlegen, der angibt, ob die ersten und letzten Seitenschaltflächen auf dem Seiten -Navigationselement angezeigt werden.
/// </summary>
[Browsable (wahr),
Beschreibung
Kategorie ("Navigationstaste"),
DefaultValue (true)]
Öffentliche Bool Showfirstlast
{{{{
erhalten
{{{{
Objekt obj = viewState ["showfirstlast"];
Return (obj == null)?
}
Setzen Sie {viewState ["showfirtLast"] = value;}
} /// <summary>
/// Erhalten oder Festlegen eines Werts gibt dieser Wert an, ob die vorherige Seite und die nächste Seite im Seitennavigationselement angezeigt werden.
/// </summary>
[Browsable (wahr),
Beschreibung
Kategorie ("Navigationstaste"),
DefaultValue (true)]
Öffentlicher Bool Showprevnext
{{{{
erhalten
{{{{
Objekt obj = viewState ["showprevnext"];
Return (obj == null)?
}
set {viewState ["showPrevNext"] = value;}
} /// <summary>
/// einen Wert abrufen oder festlegen, der angibt, ob die Schaltfläche "Seitenindexwert" im Seitennavigationselement angezeigt wird.
/// </summary>
[Browsable (wahr),
Beschreibung ("ob die Schaltfläche Wert im Seitennavigationselement angezeigt wird"),
Kategorie ("Navigationstaste"),
DefaultValue (true)]
Öffentliche Bool ShowpageIndex
{{{{
erhalten
{{{{
Objekt obj = viewState ["showpageIndex"];
Return (obj == null)?
}
Setzen Sie {viewState ["showpageIndex"] = value;}
} /// <summary>
/// Erhalten oder auf den von der Schaltfläche ersten Seite angezeigten Text abrufen oder festlegen.
/// </summary>
[Browsable (wahr),
Beschreibung ("Text auf der ersten Seite der ersten Seite angezeigt"),
Kategorie ("Navigationstaste"),
defaultValue ("<font face =" webdings "> 9 </font>")]]]]]]]
Öffentliche String FirstPagetext
{{{{
erhalten
{{{{
Objekt obj = viewState ["FirstPagetext"];
Return (obj == null)?
}
Setzen Sie {viewState ["FirstPagetext"] = value;}
} /// <summary>
/// Erhalten oder auf den in der vorherigen Seite angezeigten Text abrufen oder festgelegt.
/// </summary>
[Browsable (wahr),
Beschreibung ("Text auf der Schaltfläche vorherige Seite angezeigt"),
Kategorie ("Navigationstaste"),
defaultValue ("<font face =" webdings "> 3 </font>")]]]]]]]
Öffentliche String -Prävention
{{{{
erhalten
{{{{
Objekt obj = viewState ["prevagetext"];
Return (obj == null)?
}
Setzen Sie {viewState ["prevpageText"] = value;}
} /// <summary>
/// Erhalten oder festlegen, wie der Text auf der nächsten Seite angezeigt wird.
/// </summary>
[Browsable (wahr),
Beschreibung ("Text auf der nächsten Seite der nächsten Seite angezeigt"),
Kategorie ("Navigationstaste"),
defaultValue ("<font face =" webdings "> 4 </font>")]]]]]]]
Öffentliche String NextPagetext
{{{{
erhalten
{{{{
Objekt obj = viewState ["NextPagetext"];
Return (obj == null)?
}
Setzen Sie {viewState ["NextPagetext"] = value;}
} /// <summary>
/// den Text abrufen oder festlegen, der als letzte Seite der letzten Seite angezeigt wird.
/// </summary>
[Browsable (wahr),
Beschreibung ("Text auf der letzten Seite der letzten Seite angezeigt"),
Kategorie ("Navigationstaste"),
defaultValue ("<font face =" webdings ">: </font>")]]]]]]
Öffentliche String LastPagetext
{{{{
erhalten
{{{{
Objekt obj = viewState ["lastPagetext"];
Return (obj == null)?
}
Setzen Sie {viewState ["lastPagetext"] = value;}
} /// <summary>
/// In die Anzahl der gleichzeitig angezeigten numerischen Schaltflächen im Seitennavigationselement im Seite <siehe cref = "ASPNetPager"/> einstellen.
/// </summary>
[Browsable (wahr),
Beschreibung
Kategorie ("Navigationstaste"),
DefaultValue (10)]
Public int numericbuttoncount
{{{{
erhalten
{{{{
Objekt obj = viewState ["numericButtonCount"];
Return (obj == null)?
}
Setzen Sie {viewState ["numericButtonCount"] = value;}
} /// <summary>
/// einen Wert abrufen oder festlegen, der angibt, ob die deaktivierten Schaltflächen angezeigt werden.
/// </summary>
/// <lmarks>
/// Dieser Wert wird verwendet, um festzustellen, ob die Schaltfläche für deaktivierte Pagination Navigation angezeigt wird. Seien Sie die letzte Seite der Seite, die deaktiviert ist, die verbotenen Schaltflächen haben keinen Link und klicken Sie auf die Schaltfläche keinen Einfluss.
/// </Anmerkungen>
[Browsable (wahr),
Kategorie ("Navigationstaste"),
Beschreibung ("Ob Sie die deaktivierte Schaltfläche anzeigen"),
DefaultValue (true)]
Öffentliches bool showdisabledbuttons
{{{{
erhalten
{{{{
Objekt obj = viewState ["showdisabledButton"];
Return (obj == null)?
}
Satz
{{{{
ViewState ["showdisabledButtons"] = Wert;
}
}
#Endregion
#Region -Bild -Schaltflächen
/// <summary>
/// Erhalten oder festlegen den Pfad der Bilddatei, wenn Sie die Bildschaltfläche verwenden.
/// </summary>
[Browsable (wahr),
Kategorie ("Bildschaltfläche"),
Beschreibung ("Wenn Sie die Bildschaltfläche verwenden, geben Sie den Pfad der Bilddatei an"),),),),
DefaultValue (NULL)]
Öffentlicher String ImagePath
{{{{
erhalten
{{{{
String imgPath = (String) ViewState ["ImagePath"];
if (imgpath! = null)
imgPath = this.rSolveurl (imgPath);
Imgpath zurückgeben;
}
Satz
{{{{
String imgPath = value.trim ().
ViewState ["ImagePath"] = (imgPath.endswith ("/")? ImgPath: imgPath+"/";
}
}
/// <summary>
/// Erhalten oder festlegen, wenn Sie die Bildschaltfläche, den Typ des Bildes, z. B. GIF oder JPG, verwenden, ist dieser Wert der Suffix -Name der Bilddatei.
/// </summary>
[Browsable (wahr),
Kategorie ("Bildschaltfläche"),
StandardValue (". GIF"),
Beschreibung ("Wenn Sie die Bildschaltfläche verwenden, ist der Typ des Bildes wie GIF oder JPG der Wert der Suffix -Name der Bilddatei")]]]
Public String buttonImageextent
{{{{
erhalten
{{{{
Objekt obj = viewState ["buttonImageExtent"];
Return (obj == null)?
}
Satz
{{{{
String ext = value.trim ();
ViewState ["buttonImageExtension"] = (ext.Startswith (".")? Ext: ("."+Ext);
}
}
/// <summary>
/// Die Suffix -Zeichenfolge des benutzerdefinierten Bilddateinamens abrufen oder festlegen, um die verschiedenen Arten von Schaltflächen zu unterscheiden.
/// </summary>
/// <bemerkungen> <Note> Hinweis: </nicht> Dieser Wert ist kein Datei -Suffix, sondern eine Zeichenfolge, die zum Bildnamen hinzugefügt wurde, um verschiedene Bilddateien zu unterscheiden, wie z. B. ::
/// Es gibt derzeit zwei Sätze von Schaltflächen, von denen eines "1" "1f.gif" sein kann, und der Bildname des "1" im anderen Satz kann "1n.gif" sein, von denen f und f und f sein kann N sind buttonImagenAneextension. </Hinweise>
[Browsable (wahr),
StandardValue (NULL),
Kategorie ("Bildschaltfläche"),
Beschreibung ("Das Suffix des" benutzerdefinierten Bilddateinamens), wie die ButtonImagenamexketz des Bildes "1f.gif" ist "f" ")]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
Öffentliche String -ButtonImageNameExtension
{{{{
erhalten
{{{{
Rückgabe (String) ViewState
}
Satz
{{{{
ViewState ["buttonImagenAneAntension"] = Wert;
}
}
/// <summary>
/// das Bildname -Suffix der aktuellen Seitenindexschaltfläche abrufen oder festlegen.
/// </summary>
/// <lmarks>
/// Wenn <siehe CREF = "PagingButtonType"/> auf das Bild eingestellt ist, können Sie mit diesem Attribut das Bildname -Suffix -Zeichen festlegen Indextasten.
/// </Anmerkungen>
[Browsable (wahr),
StandardValue (NULL),
Kategorie ("Bildschaltfläche"),
Beschreibung ("Bildname Fakulture Zeichenfolge der aktuellen Seitenindexschaltfläche")]]
Öffentliche String cpibuttonImagNameextension
{{{{
erhalten
{{{{
Objekt obj = viewState
Return (obj == null)?
}
Satz
{{{{
ViewState ["cpibuttonimageNameExension"] = Wert;
}
}
/// <summary>
/// Erhalten oder festlegen die Schaltfläche "Deaktivierte Seite Navigation" Bildname Suffix Zeichenfolge.
/// </summary>
/// <lmarks>
/// Wenn <siehe CREF = "PagingButtonType"/> auf das Bild gesetzt ist, können Sie mit diesem Wert die Schaltfläche Seitennavigation festlegen (einschließlich der ersten Seite, der vorherigen Seite, der vorherigen Seite, der vorherigen Seite, der vorherigen Seite, Auf der vorherigen Seite, die Suffix -Zeichenfolge der Bilddatei -Suffix der nächsten Seite und die letzte Seite der letzten Seite, kann die Schaltfläche "Seitennavigation deaktiviert" von der Schaltfläche Normales Seitennavigation unterschiedlich sein. Wenn dieser Wert nicht festgelegt ist, lautet der Standardwert <siehe cref = "buttonImageRextent"/>, dh die Schaltfläche "Schaltfläche" für deaktivierte Seiten navigation "verwendet das gleiche Bild wie die Navigationstaste der normalen Seiten.
/// </Anmerkungen>
[Browsable (wahr),
StandardValue (NULL),
Kategorie ("Bildschaltfläche"),
Beschreibung ("Bildname Volumenzeichenfolge der Schaltfläche" Seitennavigation ")]]
Öffentliche String deaktiviert Buttonimagenexextension
{{{{
erhalten
{{{{
Objekt obj = viewState
Return (obj == null)?
}
Satz
{{{{
ViewState
}
}
/// <summary>
/// Geben Sie die Alignment -Methode an, wenn Sie die Bildschaltfläche verwenden.
/// </summary>
[Browsable (wahr),
Beschreibung
DefaultValue (imageAnign.baseline),
Kategorie ("Bildschaltfläche")]]]]
Public imagealign buttonImageAnalign
{{{{
erhalten
{{{{
Objekt obj = viewState ["buttonImageAnness"];
Return (obj == null)?
}
Setzen Sie {viewState ["buttonImageAnIGN"] = value;}
}
#Endregion
#Region Paging
/// <summary>
/// Holen Sie sich oder festlegen, ob die URL die Paginationsinformationen übergeben soll.
/// </summary>
/// <lmarks>
/// Die URL -Paging -Methode aktivieren, um den Seitenindex zu übergeben, auf den der Benutzer über die URL zugreifen möchte.
/// So wird jede Daten auf den Anfangswert wiederhergestellt oder bei jedem Paging erhalten werden. Verwenden Sie die URL -Paging -Methode, die den Attributwert dynamischer Änderungen an der Paging -Steuerung nicht unterstützt.
/// Da der neue Attributwert die URL nicht an die nächste Seite übergeben kann.
/// </Anmerkungen>
/// <Beispiel> Die folgenden Beispiele zeigen, wie die URL -Paging -Methode von ASPNETPager verwendet wird, um das DataGrid (mithilfe der Zugriffsdatenbank) aufzubringen:
/// <code> <!
/// <%@Register Tagprefix = "WebDiyer" Namespace = "Wuqi.webdiyer" Assembly = "ASPNetPager"%>
/// <%@importieren namespace = "system.data.oledb"%>
/// <%@ importieren namespace = "system.data"%>
/// <%@ page Language = "C#" Debug = true%>
/// <html>
/// <kopf>
/// <title> Willkommen bei WebDiyer.com </title>
/// <script runat = "server">
/// oledbConnection conn;
/// OLEDBCommand CMD;
/// void page_load (Objekt SRC, EventArgs e) {{{{{{
/// conn = new OLEDBConnection ("provider = microsoft.jet.oledb.4.0; data source ="+server.mappath ("Akzeptieren/ASPNetPager.mdb");
/// if (! page.ispostback) {
/// cmd = new OLEDBCOMMAND ("Wählen Sie Count (NewsID) von WQNews", Conn);
// conn.open ();
/// pager.recordcount = (int) cmd.executescalal ();
// conn.close ();
/// Binddata ();
///}
///}
///
/// void bindData () {{)
/// CMD = NEW OLEDBCOMMAND ("NewsID, Überschrift, Quelle, addtime von WQNews Order by Addtime Design, conn); conn); conn); conn); conn); conn); conn); conn) Conn);
/// OLEDBDATAADAPTER adapter = new OLEDBDataAdapter (CMD);
/// Dataset ds = new Dataset ();
/// adapter.fill (ds, pager.pageSize*(pager.currentPageIndex-), Pager.pageSize, "News");
/// dg.datasource = ds.tables ["news"];
/// dg.databind ();
///}
///
/// void Changepage (Objekt SRC, PagechangeDeVentArgs e) {{{{{{{{{{{{{{
/// Pager.CurrentPageIndex = e.NewpageIndex;
/// Binddata ();
///}
///
/// </script>
/// <meta http-equiv = "content-sprang" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "allgemeine" content = "editplus">
/// <meta name = "Author" content = "webDiyer ([E -Mail geschützt])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "Form1">
/// <H2 Align = "Center"> ASPNetPager Paging Beispiel </H2>
/// <ASP: datagrid id = "dg" runat = "server"
/// cellpadding = "4" align = "center"/>
///
/// <webDiyer: ASPNetPager runat = "server" id = "pager"
/// OnpaGechanged = "ChangePage"
/// Horizontalalal = "Center"
///
/// PageSize = "8"
/// ShowInputbox = "Immer"
/// SubmitButtonStyle = "Grenze: 1PX Solid #000066; Höhe: 20px; Breite: 30px"
/// InputBoxStyle = "Border: 1PX #0000ff Solid; Text-Align: Mitte"
/// subjektbuttonText = "wenden Sie sich an"
/// urlpaging = "true"
/// urlpageIndexname = "pageIndex"/>
/// </form>
/// </body>
/// </html>
///]]> </code>
/// </Beispiel>
[Browsable (wahr),
Kategorie ("Paging"),
DefaultValue (falsch),
Beschreibung ("Ob Sie die URL verwenden, um die Paginationsinformationen an Seiten zu übergeben")]]]]
Öffentliche Bool -URLPAGING
{{{{
erhalten
{{{{
Return URLPaging;
}
Satz
{{{{
urlpaging = Wert;
}
}
/// <summary>
/// Erhalten oder festlegen, wenn die URL -Paging -Methode aktiviert ist und der Name des Parameters des Seitenindex in der URL zu übertragen werden soll.
/// </summary>
/// <lmarks>
/// Mit diesem Attribut können Sie den Namen des Parameters des Seitenindex anpassen, um den URL -Übertragungs -Seitenindex zu übergeben, um das Wiederholen mit dem vorhandenen Parameternamen zu vermeiden.
/// <p> Der Standardwert des Attributs lautet "Seite", dh wenn die URL -Paging die in der Browser -Adressleiste angezeigte URL ähnlich ist: </p> http://www.webdiyer.com /ASPNetPager/Samples/Datagrid_url.aspx?
/// <p> Wenn der Wert in "PageIndex" geändert wird, wird die obige URL: </p> <p> http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pageIndex = 2 </p>
/// </Anmerkungen>
[Browsable (wahr),
defaultValue ("Seite"),
Kategorie ("Paging"),
Beschreibung ("Wenn die URL -Paging -Methode aktiviert ist, wird der Name des Parameters des Seitenindex in der URL angezeigt"]]]]]]]]]]]]]]]]]]]
Öffentliche String urlpageIndexname
{{{{
Holen Sie sich {return urlpageIndexname;}
Setzen Sie {urlpageIndexname = value;}
}
/// <summary>
/// den Index der aktuellen Anzeigeseite abrufen oder festlegen.
/// </summary>
/// <bemerkungen> Verwenden Sie dieses Attribut, um die derzeit angezeigte Seite im ASPNetPager -Steuerelement zu bestimmen. Dieses Attribut wird auch verwendet, um die durch Programmierung angezeigte Seite zu steuern.
/// <p> <b> HINWEIS: </b> Unterscheidet sich vom aktuellenPageIndex der DataGrid -Steuerung, die aktuellePageIndex -Eigenschaft von ASPNETPager startet ab 1. </p> </Anmerkungen>
[Readonly (wahr),
Browsable (falsch),
Beschreibung ("Index der aktuellen Anzeigeseite"),
Kategorie ("Paging"),
StandardValue (1),
DesignerSerialisierungsvissibilität (DesignerSerialisierungsvissibilität.hidden)]]
Public int CurrentPageIndex
{{{{
erhalten
{{{{
Objekt cpage = viewState ["currentPageIndex"];
int pindex = (cPage == null)?
If (pindex> pagecount && pagecount> 0)
PageCount zurückkehren;
sonst wenn (Pindex <1)
Rückkehr 1;
Pindex zurückgeben;
}
Satz
{{{{
int cpage = Wert;
if (CPAGE <1)
CPAGE = 1;
Sonst wenn (cpage> this.pageCount)
cpage = this.pageCount;
ViewState ["CurrentPageIndex"] = CPAGE;
}
}
/// <summary>
/// Die Gesamtzahl aller Datensätze abrufen oder festlegen.
/// </summary>
/// <lmarks>
/// Wenn die Seite zum ersten Mal geladen wird, sollte sie das Attribut für die Gesamtzahl der Paging -Datensätze in der Datentabelle aus dem Speicherprozess oder der SQL -Anweisung erhalten. Auf der Seite auf der Seite wird der Wert bei der Rückkehr von ViewState erhalten, sodass der Zugriff auf die Datenbank jedes Mal vermieden wird, wenn die Pagination vermieden wird. ASPNetPager berechnet die Gesamtzahl der Seiten, die alle Daten basierend auf der Gesamtzahl der zu vereitenden Daten und der <siehe CREF = "PageSize"/> Attribute für das Paging, dh, den Wert von <siehe cref = "pageCount", berechnet. />.
/// </Anmerkungen>
/// <Beispiel>
/// Das folgende Beispiel zeigt, wie die Gesamtzahl der von der SQL -Anweisung zurückgegebenen Datensätze dem Attribut zugewiesen wird:
/// <p>
/// <code> <!
/// <html>
/// <kopf>
/// <title> Willkommen bei WebDiyer.com </title>
/// <script runat = "server">
/// sqlConnection conn;
/// Sqlcommand CMD;
/// void page_load (Objekt SRC, EventArgs E)
/// {
// conn = new SQLConnection (configurationssettings.Appsettings ["connstr"];
/// if (! page.ispostback)
/// {
/// Cmd = new SQLCommand ("Wählen Sie Count (ID) aus Nachrichten", Conn);
// conn.open ();
/// pager.recordcount = (int) cmd.executescalal ();
// conn.close ();
/// Binddata ();
///}
///}
///
/// void binddata ()
/// {
/// cmd = new SQLCommand ("GetpageNews", 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 (Objekt SRC, PagechangeDeVentArgs E)
/// {
/// Pager.CurrentPageIndex = e.NewpageIndex;
/// Binddata ();
///}
/// </script>
/// <meta http-equiv = "content-sprang" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text/html; charset = gb2312">
/// <meta name = "allgemeine" content = "editplus">
/// <meta name = "Author" content = "webDiyer ([E -Mail geschützt])"> ">">
/// </head>
/// <body>
/// <form runat = "server" id = "Form1">
/// <ASP: datagrid id = "datagrid1" runat = "server"/>
///
/// <webDiyer: ASPNetPager id = "pager" runat = "server"
/// PageSize = "8"
/// numericButtonCount = "8"
/// showcustominfosection = "vor" vor "
/// ShowInputbox = "Immer"
/// CSSSCLASS = "MyPager"
/// Horizontalalal = "Center"
/// onpaGeChanged = "ChangePage"/>
///
/// </form>
/// </body>
/// </html>
///]]>
/// </code> </p>
/// <p> Der in diesem Beispiel verwendete Speicherprozedurcode lautet wie folgt: </p>
/// <code> <!
/// Procedure erstellen GetpageNews
/// (@pagesize int,
@pageIndex int)
/// als
/// Nocount auf festlegen
/// @Intextable Table deklarieren
/// @pagelowerBound int deklarieren
/// Declare @pageupperbound int
/// set @pagelowerBound = (@pageIndex-)*@pageSize
/// @[E -Mail geschützt] [E -Mail geschützt]
/// RowCount @pageupperbound einstellen
/// In @Intextable (NID) einfügen ID aus News Order By Addtime Desc
/// Wählen Sie O.id, O.Title, O.Source, O.Addtime aus Nachrichten
/// und t.id> @pagelowerBound und T.ID <[E -Mail Proprly] Bestellung von T.ID
/// Nocount abstellen
/// GEHEN
///]]>
/// </code>
/// </Beispiel>
[Browsable (falsch),
description("要分页的所有记录的总数,该值须在程序运行时设置,默认值为225是为设计时支持而设置的参照值。"),
category("data"),
defaultvalue(225)]
public int recordcount
{{{{
erhalten
{{{{
object obj=viewstate["recordcount"];
return (obj==null)?0:(int)obj;
}
set{viewstate["recordcount"]=value;}
}
/// <summary>
/// 获取当前页之后未显示的页的总数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagesremain
{{{{
erhalten
{{{{
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
{{{{
erhalten
{{{{
object obj=viewstate["pagesize"];
return (obj==null)?10:(int)obj;
}
Satz
{{{{
viewstate["pagesize"]=value;
}
}
/// <summary>
/// 获取在当前页之后还未显示的剩余记录的项数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int recordsremain
{{{{
erhalten
{{{{
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),
Beschreibung
category("文本框及提交按钮"),
defaultvalue(showinputbox.auto)]
public showinputbox showinputbox
{{{{
erhalten
{{{{
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
{{{{
erhalten
{{{{
return (string)viewstate["inputboxclass"];
}
Satz
{{{{
if(value.trim().length>0)
viewstate["inputboxclass"]=value;
}
}
/// <summary>
/// 获取或设置页索引输入文本框的css样式文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css样式文本")]
public string inputboxstyle
{{{{
erhalten
{{{{
return (string)viewstate["inputboxstyle"];
}
Satz
{{{{
if(value.trim().length>0)
viewstate["inputboxstyle"]=value;
}
}
/// <summary>
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("页索引输入文本框前的文本内容字符串")]
public string textbeforeinputbox
{{{{
erhalten
{{{{
return (string)viewstate["textbeforeinputbox"];
}
Satz
{{{{
viewstate["textbeforeinputbox"]=value;
}
}
/// <summary>
/// 获取或设置页索引文本输入框后的文本内容字符串值。
/// </summary>
[browsable(true),
defaultvalue(null),
category("文本框及提交按钮"),
description("页索引输入文本框后的文本内容字符串")]
public string textafterinputbox
{{{{
erhalten
{{{{
return (string)viewstate["textafterinputbox"];
}
Satz
{{{{
viewstate["textafterinputbox"]=value;
}
}
/// <summary>
/// 获取或设置提交按钮上的文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue("go"),
description("提交按钮上的文本")]
public string submitbuttontext
{{{{
erhalten
{{{{
object obj=viewstate["submitbuttontext"];
return (obj==null)?"go":(string)obj;
}
Satz
{{{{
if(value.trim().length>0)
viewstate["submitbuttontext"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
Beschreibung
public string submitbuttonclass
{{{{
erhalten
{{{{
return (string)viewstate["submitbuttonclass"];
}
Satz
{{{{
viewstate["submitbuttonclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于提交按钮的css样式。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于提交按钮的css样式")]
public string submitbuttonstyle
{{{{
erhalten
{{{{
return (string)viewstate["submitbuttonstyle"];
}
Satz
{{{{
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
{{{{
erhalten
{{{{
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
{{{{
erhalten
{{{{
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
{{{{
erhalten
{{{{
object obj=viewstate["custominfotextalign"];
return (obj==null)?horizontalalign.left:(horizontalalign)obj;
}
Satz
{{{{
viewstate["custominfotextalign"]=value;
}
}
/// <summary>
/// 获取或设置用户自定义信息区的宽度。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(typeof(unit),"40%"),
description("用户自定义信息区的宽度")]
public unit custominfosectionwidth
{{{{
erhalten
{{{{
object obj=viewstate["custominfosectionwidth"];
return (obj==null)?unit.percentage(40):(unit)obj;
}
Satz
{{{{
viewstate["custominfosectionwidth"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的级联样式表类名。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Beschreibung
public string custominfoclass
{{{{
erhalten
{{{{
object obj=viewstate["custominfoclass"];
return (obj==null)?cssclass:(string)obj;
}
Satz
{{{{
viewstate["custominfoclass"]=value;
}
}
/// <summary>
/// 获取或设置应用于用户自定义信息区的css样式文本。
/// </summary>
/// <value>字符串值,要应用于用户自定义信息区的css样式文本。</value>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
description("应用于用户自定义信息区的css样式文本")]
public string custominfostyle
{{{{
erhalten
{{{{
object obj=viewstate["custominfostyle"];
return (obj==null)?getstylestring():(string)obj;
}
Satz
{{{{
viewstate["custominfostyle"]=value;
}
}
/// <summary>
/// 获取或设置在显示在用户自定义信息区的用户自定义文本。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Beschreibung
public string custominfotext
{{{{
erhalten
{{{{
return (string)viewstate["custominfotext"];
}
Satz
{{{{
viewstate["custominfotext"]=value;
}
}
#endregion
#region others
/// <summary>
/// 获取或设置一个值,该值指定是否总是显示aspnetpager分页按件,即使要分页的数据只有一页。
/// </summary>
/// <remarks>
/// 默认情况下,当要分页的数据小于两页时,aspnetpager不会在页面上显示任何内容,将此属性值设为true时,即使总页数只有一页,aspnetpager也将显示分页导航元素。
/// </remarks>
[browsable(true),
category("behavior"),
defaultvalue(false),
description("总是显示分页控件,即使要分页的数据只要一页")]
public bool alwaysshow
{{{{
erhalten
{{{{
object obj=viewstate["alwaysshow"];
return (obj==null)?false:(bool)obj;
}
Satz
{{{{
viewstate["alwaysshow"]=value;
}
}
/// <summary>
/// 获取或设置由aspnetpager 服务器控件在客户端呈现的级联样式表(css) 类。
/// </summary>
[browsable(true),
description("应用于控件的css类名"),
category("appearance"),
defaultvalue(null)]
public override string cssclass
{{{{
get{return base.cssclass;}
Satz
{{{{
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
{{{{
erhalten
{{{{
return base.enableviewstate;
}
Satz
{{{{
base.enableviewstate=true;
}
}
/// <summary>
/// 获取或设置当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。"),
defaultvalue("页数超出范围!"),
category("data")]
public string pageindexoutofrangeerrorstring
{{{{
erhalten
{{{{
object obj=viewstate["pageindexoutofrangeerrorstring"];
return (obj==null)?"页数超出范围!":(string)obj;
}
Satz
{{{{
viewstate["pageindexoutofrangeerrorstring"]=value;
}
}
/// <summary>
/// 获取或设置当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。"),
defaultvalue("页索引无效!"),
category("data")]
public string invalidpageindexerrorstring
{{{{
erhalten
{{{{
object obj=viewstate["invalidpageindexerrorstring"];
return (obj==null)?"页索引无效!":(string)obj;
}
Satz
{
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;
versuchen
{
index=int.parse(pageindex);
}
fangen {}
onpagechanged(new pagechangedeventargs(index));
}
anders
{
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>
/// 重写<see cref="system.web.ui.webcontrols.webcontrol.addattributestorender"/> 方法,将需要呈现的html 属性和样式添加到指定的<see cref="system.web.ui.htmltextwriter"/> 中
/// </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 Gerät.
/// </summary>
/// <param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
protected override void rendercontents(htmltextwriter writer)
{
if(pagecount<=1&&!alwaysshow)
Zurückkehren;
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:
mit System verwenden;
mit System.web.ui;
Verwenden von 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;}
Satz
{
foreach(char c in system.convert.tostring(value))
{{{{
if(!char.isnumber(c)
{
_totalrecord=0;
Brechen;
}
_totalrecord=value;
}
} [description('每页显示记录数'),bindable(true),category('behavior'),defaultvalue(0)]
public int pagesize
{
get{return _pagesize;}
Satz
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_pagesize=0;
Brechen;
}
}
_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;}
Satz
{
foreach(char c in system.convert.tostring(value))
{{{{
if(!char.isnumber(c))
{
_itemsize=10;
Brechen;
}
}
_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);
}
anders
{
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>';
anders
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);
}
anders
{
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>';
anders
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开发资料库,