// Ce code source est pour l'apprentissage de référence uniquement, et non à des fins commerciales;
// Si vous devez modifier et ré-compiler le contrôle, conservez les informations sur le droit d'auteur du code source complet!
// Pour plus d'informations sur la mise à niveau du contrôle et les nouvelles informations de version de contrôle, veuillez faire attention à www.webdiyer.com.
Utilisation du système;
Utilisation de System.io;
Utilisation de System.Web;
Utilisation de System.Web.UI;
Utilisation de System.Web.Ui.WebControls;
Utilisation de System.Web.Ui.htmlControls;
Utilisation de System.Collections. spécialized;
Utilisation de System.Text;
Utilisation de System.ComponentModel;
Utilisation de System.ComponentMol.Design;
Utilisation de System.Collections;
espace de noms wuqi.webdiyer
{{
Contrôle du serveur #Region ASPNetPager
#Region Control Description et exemple
/// <résumé>
/// pour les contrôles de serveur pour les données de pagination de données dans l'application Web ASP.NET.
/// </summary>
/// <Remarques> Contrairement au contrôle DataGrid, le contrôle de pagination ASPNETPAGRER lui-même n'affiche aucune donnée, mais affiche uniquement l'élément de navigation de la page. Ce contrôle peut paginer le dataGrid, le datalist, le répéteur et les contrôles personnalisés. grand!
/// <p> Aspnetpager 2.0 a récemment ajouté la fonction de pagination via l'URL, ce qui permet aux visiteurs d'entrer directement l'URL pour accéder à n'importe quelle page, et le moteur de recherche peut également récupérer directement chaque page. </p>
/// <p> Pour utiliser le contrôle de la pagination ASPNetPager, au moins il doit spécifier son attribut <voir cref = "recordCount" />, spécifier et écrire le programme de traitement de l'événement <See Cref = "PAGECHANGED" />.
/// <Voir Cref = "RecordCount" /> L'attribut spécifie le nombre total de toutes les données à paginer dans la pagination.
/// Si le programme de traitement <See Cref = "PageChanged" /> n'est pas spécifié et écrit, alors lorsque l'utilisateur clique sur l'élément de navigation de la page ou l'index de la page d'entrée de la main dans la zone texte d'index de page et la page Soumettre .
/// La méthode de pagination du contrôle ASPNetPager est fondamentalement la même que celle de DataGrid, c'est-à-dire dans son programme de traitement d'événements <voir Cref = "PageChanged" />, le <voir cref = "pagechangedEventargs" de <See Cref = "PageChangedEventArgs.newpageIndex" /> est attribué à l'attribut <See Cref = "currentPageIndex" /> de <voir cref = "currentPageIndex" />, puis re -Bind les nouveaux contrôles d'affichage de données et de données. </p> </ Remarques>
/// <exemple> Les exemples suivants montrent comment utiliser Aspnetpager pour enregistrer le dataGrid.
/// <code> <!
/// <% @ page langage = "C #"%>
/// <% @ importation namespace = "System.Data"%>
/// <% @ importation namespace = "System.Data.sqlClient"%>
/// <% @ importation namespace = "System.configuration"%>
/// <% @ register tagprefix = "webdiyer" namespace = "wuqi.webdiyer" assembly = "aspnetpager"%>
/// <html>
/// <A-Head>
/// <Title> Bienvenue sur webdiyer.com </Title>
/// <script runat = "server">
/// SQLConnection Conn;
/// SQLCommand CMD;
/// void page_load (objet Src, EventArgs e)
/// {
// Conn = new SqlConnection (configUrationsTetings.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 = "Record Total: <font color =" bleu "> <b>" + pager.recordCount.tostring () + "</font>" ";
/// pager.customInfotext + = "Numéro de page total: <font color =" bleu "> <b>" + pager.pageCount.tostring () + "</font>" ";
/// pager.customInfotext + = "Page actuelle: <font color =" red "> <b>" + pager.currentPageIndex.toString () + "</b> </font>"
///}
/// void ChangePage (objet SRC, PageChangedEventArgs e)
/// {
/// pager.currentPageIndex = e.newPageIndex;
/// bindData ();
///}
/// </cript>
/// <meta http-equiv = "content-Language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text / html; charset = gb2312">
/// <meta name = "General" content = "editPlus">
/// <meta name = "auteur" content = "webdiyer ([e-mail protégé])"> ">">
/// </ head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: dataGrid id = "datagrid1" runat = "server" />
/// <webdiyer: aspnetpager id = "pager"
/// runat = "serveur"
/// pagesize = "8"
/// Numericbuttoncount = "8"
/// showCustomInfosection = "Left"
/// pagingButtonspacing = "0"
/// showInputbox = "toujours"
/// cssclass = "mypager"
/// Horizontalalally = "Right"
/// onPageChanged = "ChangePage"
/// soumibuttonText = "Tournez-vous"
/// NumericbuttonTextFormatString = "[{0}]" />
/// </ form>
/// </ body>
/// </ html>
///]]>
/// </code>
/// <p> La procédure de stockage SQL Server utilisée dans cet exemple: </p>
/// <code>
/// <!
/// Créer une procédure GetNews
/// (@PageSize int,
/// @pageindex int,
@DoCount bit)
/// comme
/// Définissez NOCOUNT sur
/// if (@Docount = 1)
/// Sélectionnez Count (ID) dans News
/// autre
/// commencer
/// Déclarer @indexable tab
/// Déclarer @pageLowerbound int
/// Déclarer @PageUpperBound int
/// Définissez @PageLowerBound = (@PageIndex -) * @ PageSize
/// set @ [e-mail protégé] [Protégé par e-mail]
/// définir RowCount @PageUpperBound
/// insérer dans @inDExtable (NID) Sélectionnez ID à partir de la commande de presse par Addtime Desc
/// sélectionnez O.ID, O.Source, O.title, O.Addtime à partir de nouvelles
/// et t.id> @PageELowerBound et T.id <= @pageupperbound Commande par T.Id
/// fin
/// Définit Nocount
/// ALLER
///]]>
/// </code> </ exemple>
#Endregion
[DefaultProperty ("PageSize")]
[DefaultEvent ("PageChanged")]
[Parsechildrn (false)]
[Persistance (false)]
[Description ("" Contrôle de pagination pour les applications Web ASP.NET ")]]]]]]]]]]
[Concepteur (typeof (page designer)]]]
[ToolsBoxData (<{0}: aspnetpager runat = server> </ {0}: aspnetpager> ")]
Classe publique Aspnetpager: panneau, inamingContainer, ipostbackeventhandler, ipostbackdatahandler
{{
Chaîne privée cssclassName;
Chaîne privée urlpageIndexName = "page";
Urlpaging Bool privé = false;
String privé InputPageIndex;
String privé currentUrl = null;
NamevalueCollection UrlParams = null;
/// Obtenez ou définissez une valeur.
/// </summary>
[Browsable (vrai),
catégorie ("bouton de navigation"), defaultValue (true), description ("Spécifie lorsque la souris reste sur le bouton de navigation, est l'invite de l'outil d'affichage"]]]]]]]]
BOOL PUBLIC a montréavigationtooltip
{{
obtenir
{{
Object obj = vue ["illustréavigationtooltip"];
Return (obj == null)?
}
ensemble
{{
ViewState ["illustréavigationToolTip"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez l'outil du bouton de navigation pour inviter le format de texte.
/// </summary>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
DefaultValue ("Tournez-vous à la page n ° {0}"),
Descripting ("Page Navigation Button Tools Rappel Text Format")]
Corde publique
{{
obtenir
{{
objet obj = vue ["NavigationToolTipTextFormatString"];
Return (obj == null)?
}
ensemble
{{
string point = value;
if.trim ().
TIP = "{0}";
Viewstate
}
} /// <résumé>
/// Obtenez ou définissez une valeur.
/// </summary>
/// <lmarks>
/// Lors de la définition de cette valeur sur true et de ne pas utiliser le bouton d'image, la valeur du bouton d'index de page 1, 2, 3, etc. sera remplacée par des caractères chinois d'abord, deux et trois.
/// </ Remarques>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
DefaultValue (false),
Descripting ("Si le bouton de valeur d'index de page est remplacé par les nombres chinois en premier, deuxième et troisième,"]]
Public bool chinesepageIndex
{{
obtenir
{{
objet obj = vue ["ChineSepageIndex"];
Return (obj == null)?
}
ensemble
{{
ViewState ["ChineSepageIndex"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez le format d'affichage du texte sur le bouton de navigation numérique.
/// </summary>
/// <value>
/// String, spécifiez le format d'affichage du texte sur la valeur d'index de page de la page, la valeur par défaut est <voir cref = "string.empty" />, c'est-à-dire que la propriété n'est pas définie. </value>
/// <lmarks>
/// Utilisez des propriétés NumericbuttonTextFormatString pour spécifier le format d'affichage du bouton de valeur indexé.
/// Si la valeur est définie sur "[{0}]", le texte d'index sera affiché comme: [1] [2] [3] ..., définissez la valeur sur "- {0} -", puis tourner le texte d'index en: -1--2- -3- ...
/// </ Remarques>
[Browsable (vrai),
defaultValue ("") ,,
Catégorie ("bouton de navigation"),
Descripting ("Afficher le format du texte sur le bouton numérique d'index de page")]]
Chaîne publique NumericbuttonTextFormatString
{{
obtenir
{{
objet obj = vue
Return (obj == null)? String.empty: (string) obj;
}
ensemble
{{
ViewState ["NumericbuttontexTextFormatring"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez le type de bouton de navigation de pagination, même si le texte est toujours image.
/// </summary>
/// <lmarks>
/// Pour utiliser le bouton d'image, vous devez préparer les images suivantes: dix valeurs de 0 à 9 (lorsque ShowpageIndex est défini sur true), la première page, la page précédente, la page suivante, la dernière page et plus De plus en plus de page (...) Cinq images de boutons (lorsque ShowFirstLast et ShowPrevNext sont définis sur true),
/// Si le bouton numérique de l'index de page actuel est nécessaire pour être différent des autres boutons numériques d'index de page, vous devez préparer l'image du bouton de l'index de page actuel;
/// Si l'image de la première page désactivée, de la dernière page, de la page suivante et de la dernière page est différente de l'image du bouton normal, vous devez préparer les images de ces quatre boutons à l'état désactivé;
/// <p> <b> Les règles de dénomination du fichier photo sont les suivantes: </b> </p>
/// <p> De 0 à 9 dix boutons numériques, l'image doit être nommée "Valeur + ButtonImageNameExtexExpenses + ButtonImageExtentation".
/// ButtonImageExtenting est le nom de suffixe du fichier photo, tel que .gif ou .jpg, etc., tous les types de fichiers d'image qui peuvent être affichés dans le navigateur. Par exemple, le fichier photo de l'index de page "1" peut être nommé "1.gif" ou "1.jpg",
/// Lorsque vous avez deux ensembles de fichiers d'images ou plus, vous pouvez distinguer différents ensembles de différents ensembles d'images en spécifiant la valeur d'attribut ButtonImageNameExtent. "1.gif". bientôt. </p>
/// <P> Le nom du fichier d'image du bouton première de page commence par "d'abord". La question de savoir si le ButtonMageNameExketnsion utilise le ButtonMageNameExtension dépend des paramètres du bouton numérique et s'il y a plus d'images. </p>
/// </ Remarques>
/// <nexe>
/// l'exemple de fragment de code suivant si vous utilisez le bouton d'image:
/// <p>
/// <code> <!
/// <webdiyer: aspnetpager runat = "server"
/// id = "pager1"
/// onPageChanged = "ChangePage"
/// PAGINGBUTTONTYPE = "Image"
/// imagePath = "images"
/// ButtonMageNameExtent = "n"
/// DisabledButtonImageNameExtension = "G"
/// ButtonImageExtent = "GIF"
/// cpbutTonImageNameExension = "R"
/// PAGINGBUTTONSPACING = 5 />
///]]>
/// </code>
/// </p>
/// </ exampe>
[Browsable (vrai),
DefaultValue (PAGINYBUTTONTYPE.Text),
Catégorie ("bouton de navigation"),
Description
Public PagingButtonType PagingButtisepe
{{
obtenir
{{
objet obj = vue
Return (obj == null)?
}
ensemble
{{
Viewstate
}
} /// <résumé>
/// Obtenez ou définissez le type du bouton numérique de navigation, qui n'est valide que lorsque le pagingButtonType est défini sur l'image.
/// </summary>
/// <lmarks>
/// Lorsque vous définissez le pagingbuttontype sur l'image, lorsque vous ne souhaitez pas que le bouton numérique d'index de page utilise l'image, vous pouvez définir la valeur sur le texte, ce qui fera que le bouton de données d'indexation de la page utilise le texte au lieu du bouton d'image .
/// </ Remarques>
[Browsable (vrai),
DefaultValue (PAGINYBUTTONTYPE.Text),
Catégorie ("bouton de navigation"),
Descripting ("Type de" Bouton numérique numérique de navigation de page ")]]
Public PagingButtonType NumericbuttonType
{{
obtenir
{{
objet obj = vue
Retour (obj == null)?
}
ensemble
{{
ViewState ["NumericbuttonType"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez le type de la première page, de la dernière page, de la page suivante et de la dernière page.
/// </summary>
/// <lmarks>
/// Lorsque vous définissez le pagingbuttontype sur image mais que vous ne souhaitez pas utiliser l'image pour la première, la page suivante, la page suivante et la dernière page, vous pouvez définir la valeur sur le texte, qui fera les quatre boutons précédents du précédent Quatre boutons utilisent du texte au lieu du bouton d'image.
/// </ Remarques>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
DefaultValue (PAGINYBUTTONTYPE.Text),
Description
Public ButtonType
{{
obtenir
{{
objet obj = vue ["NavigationButtonType"];
Retour (obj == null)?
}
ensemble
{{
ViewState ["NavigationButtonType"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez le type de bouton "plus de pages" (...), qui n'est valide que lorsque le pagingButtonType est défini sur l'image.
/// </summary>
/// <lmarks>
/// Lorsque vous définissez l'image de PagingButtonType mais ne voulez pas plus de pages (...) pour utiliser des images, vous pouvez définir cette valeur sur le texte, ce qui fera utiliser plus de boutons de page au lieu du bouton d'image.
/// </ Remarques>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
DefaultValue (PAGINYBUTTONTYPE.Text),
Descripting ("plus de pages" (...) Type de bouton ")]
Public PagingButtonType Morebuttonpe
{{
obtenir
{{
objet obj = vue ["MoreButtisepe"];
Retour (obj == null)?
}
ensemble
{{
ViewState ["MoreButtisepe"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez la distance entre le bouton de navigation de pagination.
/// </summary>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
DefaultValue (typeof (unité), "5px"),
Description
unité publique PagingButtonspacing
{{
obtenir
{{
objet obj = vue ["PAGINGBUTTONSPACING"];
Return (obj == null)?
}
ensemble
{{
ViewState ["PagingButTonspacing"] = valeur;
}
} /// <résumé>
/// Obtenez ou définissez une valeur, ce qui indique si les première et dernière page sont affichées sur l'élément de navigation de la page.
/// </summary>
[Browsable (vrai),
Descriptions
Catégorie ("bouton de navigation"),
DefaultValue (true)]
Public bool showfirstlast
{{
obtenir
{{
objet obj = vue ["showFirstLast"];
Return (obj == null)?
}
set {ViewState ["showFirtLast"] = valeur;}
} /// <résumé>
/// Obtenir ou définir une valeur, cette valeur indique si la page précédente et la page suivante sont affichées dans l'élément de navigation de la page.
/// </summary>
[Browsable (vrai),
Descriptions
Catégorie ("bouton de navigation"),
DefaultValue (true)]
Public bool showprevnext
{{
obtenir
{{
objet obj = vue ["showprevnext"];
Return (obj == null)?
}
set {ViewState ["showprevnext"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez une valeur qui indique si le bouton de valeur d'index de page s'affiche dans l'élément de navigation de la page.
/// </summary>
[Browsable (vrai),
Descripting ("si le bouton de valeur s'affiche dans l'élément de navigation de la page"),
Catégorie ("bouton de navigation"),
DefaultValue (true)]
Public bool showpageindex
{{
obtenir
{{
objet obj = vue ["showPageIndex"];
Return (obj == null)?
}
set {ViewState ["showpageIndex"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez le texte affiché par le bouton première page.
/// </summary>
[Browsable (vrai),
Description ("Texte affiché sur le bouton première page"),
Catégorie ("bouton de navigation"),
defaultValue ("<font face =" webdings "> 9 </font>")]]
String public FirstPageText
{{
obtenir
{{
objet obj = vue ["FirstPageText"];
Return (obj == null)?
}
set {ViewState ["FirstPageText"] = valeur;}
} /// <résumé>
/// Obtenez ou défini sur le texte affiché dans le bouton de la page précédente.
/// </summary>
[Browsable (vrai),
Description ("Texte affiché sur le bouton de la page précédente"),
Catégorie ("bouton de navigation"),
defaultValue ("<font face =" webdings "> 3 </font>")]]
Public String prevageText
{{
obtenir
{{
objet obj = vue ["prevageText"];
Return (obj == null)?
}
set {ViewState ["prevpageText"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez le texte affiché par la page suivante.
/// </summary>
[Browsable (vrai),
Description ("Texte affiché sur le bouton de la page suivante"),
Catégorie ("bouton de navigation"),
defaultValue ("<font face =" webdings "> 4 </font>")]]
Chaîne publique NextPageText
{{
obtenir
{{
objet obj = vue ["nextPageText"];
Return (obj == null)?
}
set {ViewState ["nextPageText"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez le texte affiché comme le dernier bouton de page.
/// </summary>
[Browsable (vrai),
Description ("Texte affiché sur le bouton de la dernière page"),
Catégorie ("bouton de navigation"),
defaultValue ("<font face =" webdings ">: </font>")]]
Chaîne publique LastPageText
{{
obtenir
{{
objet obj = vue ["LastPageText"];
Return (obj == null)?
}
set {ViewState ["LastPageText"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez le nombre de boutons numériques affichés en même temps dans l'élément de navigation de la page dans le contrôle <See Cref = "aspnetpager" />.
/// </summary>
[Browsable (vrai),
Descriptions
Catégorie ("bouton de navigation"),
defaultValue (10)]
Public int Numericbuttoncount
{{
obtenir
{{
objet obj = vue ["NumericbuttonCount"];
Retour (obj == null)? 10: (int) obj;
}
set {ViewState ["NumericbuttonCount"] = valeur;}
} /// <résumé>
/// Obtenez ou définissez une valeur qui spécifie si les boutons désactivés sont affichés.
/// </summary>
/// <lmarks>
/// Cette valeur est utilisée pour spécifier si le bouton de navigation de pagination désactivé s'affiche. être le dernier bouton de page sera désactivé, les boutons interdits n'ont pas de lien et cliquez sur le bouton n'aura aucun effet.
/// </ Remarques>
[Browsable (vrai),
Catégorie ("bouton de navigation"),
Descripting ("s'il faut afficher le bouton désactivé"),
DefaultValue (true)]
Public bool showDisabledButtons
{{
obtenir
{{
objet obj = vue ["showDisabledButton"];
Return (obj == null)?
}
ensemble
{{
ViewState ["showDisabledButtons"] = valeur;
}
}
#Endregion
Boutons d'image #Region
/// <résumé>
/// Obtenez ou définissez le chemin du fichier photo lors de l'utilisation du bouton Image.
/// </summary>
[Browsable (vrai),
Catégorie ("bouton d'image"),
Descripting ("Lors de l'utilisation du bouton Image, spécifiez le chemin du fichier d'image"), "),),
defaultValue (null)]
Public String ImagePath
{{
obtenir
{{
String imgpath = (string) ViewState ["ImagePath"];
if (imgpath! = null)
imgpath = this.rsolveUrl (imgpath);
Retour iMgpath;
}
ensemble
{{
chaîne imgpath = valeur.trim ().
ViewState ["ImagePath"] = (imgpath.endswith ("/")? Imgpath: imgpath + "/";
}
}
/// <résumé>
/// Obtenez ou définissez lorsque vous utilisez le bouton Image, le type de l'image, tel que GIF ou JPG, cette valeur est le nom de suffixe du fichier image.
/// </summary>
[Browsable (vrai),
Catégorie ("bouton d'image"),
defaultValue (". GIF"),
Description ("Lorsque vous utilisez le bouton Image, le type de l'image, tel que GIF ou JPG, cette valeur est le nom de suffixe du fichier d'image")]
String public ButtonImageExtent
{{
obtenir
{{
objet obj = vue ["ButtonImageExtent"];
Return (obj == null)?
}
ensemble
{{
String ext = varim.trim ();
ViewState ["ButtonImageExtension"] = (ext.startswith (".")? EXT: ("." + Ext);
}
}
/// <résumé>
/// Obtenez ou définissez la chaîne de suffixe du nom de fichier image personnalisé pour distinguer les différents types de boutons.
/// </summary>
/// <Remarks> <ROOT> Remarque: </not> Cette valeur n'est pas un suffixe de fichier, mais une chaîne ajoutée au nom de l'image pour distinguer différents fichiers d'images, tels que ::
/// il y a actuellement deux ensembles de boutons, dont l'un "1" peut être "1f.gif", et le nom d'image du "1" dans l'autre ensemble peut être "1n.gif", dont f et N sont ButtonMageNameExtension. </varks>
[Browsable (vrai),
defaultValue (null),
Catégorie ("bouton d'image"),
Descripting ("Le suffixe du" nom de fichier d'image personnalisé), comme la ButtonImageNamexkettency de l'image "1f.gif" est "f" ")]]]]]]]]]
Chaîne publique ButtonImageEnameExtension
{{
obtenir
{{
Return (string) vue
}
ensemble
{{
ViewState ["ButtonImageNameExtension"] = valeur;
}
}
/// <résumé>
/// Obtenez ou définissez le suffixe de nom d'image du bouton d'index de page actuel.
/// </summary>
/// <lmarks>
/// Lorsque <voir Cref = "PagingButtonType" /> est défini sur l'image, cet attribut vous permet de définir le caractère de suffixe du nom d'image utilisé par le bouton d'index de page actuel, de sorte que les boutons d'index de page actuel peuvent être utilisés différents de la page Boutons d'index.
/// </ Remarques>
[Browsable (vrai),
defaultValue (null),
Catégorie ("bouton d'image"),
Descripting ("Image Name Faculture String du bouton Index de page actuel")]
Chaîne publique CpIbtTonImArnameExtension
{{
obtenir
{{
objet obj = vue
Return (obj == null)?
}
ensemble
{{
ViewState ["CpIbTtonImageNameExension"] = valeur;
}
}
/// <résumé>
/// Obtenez ou définissez la page de navigation de la page désactivée Nom de l'image STRING SUFFIX.
/// </summary>
/// <lmarks>
/// Lorsque <voir Cref = "PAGINGBUTTONTYPE" /> est défini sur l'image, cette valeur vous permet de définir le bouton de navigation de la page (y compris la première page, la page précédente, la page précédente, la page précédente, la page précédente, La page précédente, le nom du fichier d'image suffire la chaîne de la page suivante et la dernière page de la dernière page, de sorte que le bouton de navigation de page désactivé peut être différent du bouton de navigation de la page normale. Si cette valeur n'est pas définie, la valeur par défaut est <Voir Cref = "ButtonImageRextent" />, c'est-à-dire que le bouton de navigation de la page désactivée utilise la même image que le bouton de navigation de la page normale.
/// </ Remarques>
[Browsable (vrai),
defaultValue (null),
Catégorie ("bouton d'image"),
Descripting ("String de volume de nom d'image du bouton de navigation de la page désactivée")]
String public DisabledButtonImageNameExtension
{{
obtenir
{{
objet obj = vue
Return (obj == null)?
}
ensemble
{{
Viewstate
}
}
/// <résumé>
/// Spécifiez la méthode d'alignement lors de l'utilisation du bouton Image.
/// </summary>
[Browsable (vrai),
description
defaultValue (ImageALIGN.Baseline),
catégorie ("bouton d'image")]]
ImageALIGN PUBLIQUE BUTUTIMAGEALIGN
{{
obtenir
{{
objet obj = vue ["ButtonImageALIGN"];
Return (obj == null)?
}
set {ViewState ["ButtonImageALIGN"] = valeur;}
}
#Endregion
Paginage #Region
/// <résumé>
/// Obtenez ou définissez l'opportunité de permettre à l'URL de passer les informations de pagination.
/// </summary>
/// <lmarks>
/// Activez la méthode de pagination URL pour passer l'index de page auquel l'utilisateur souhaite accéder via l'URL.
/// Ainsi, toutes les données sont restaurées à la valeur initiale ou doivent être obtenues à chaque pagination. Utiliser la méthode de pagination URL ne prend pas en charge la valeur d'attribut des modifications dynamiques du contrôle de pagination.
/// parce que la nouvelle valeur d'attribut est temporairement incapable de passer l'URL à la page suivante.
/// </ Remarques>
/// <exemple> Les exemples suivants montrent comment utiliser la méthode de pagination URL d'Aspnetpager pour paginer le dataGrid (en utilisant la base de données d'accès):
/// <code> <!
/// <% @ register tagprefix = "webdiyer" namespace = "wuqi.webdiyer" assembly = "aspnetpager"%>
/// <% @ importation namespace = "System.Data.oledb"%>
/// <% @ importation namespace = "System.Data"%>
/// <% @ page langage = "C #" Debug = true%>
/// <html>
/// <A-Head>
/// <Title> Bienvenue sur webdiyer.com </Title>
/// <script runat = "server">
/// OledBconnection Conn;
/// oledbcommand cmd;
/// void page_load (objet src, eventArgs e) {{
/// Conn = new oledbconnection ("provider = Microsoft.Jet.oledb.4.0; Data Source =" + Server.Mappath ("accepter / aspnetpager.mdb");
/// if (! page.ispostback) {
/// cmd = new oledbcommand ("SELECT COUNT (NewsId) FROM WQNEWS", Conn);
// conn.open ();
/// pager.recordCount = (int) cmd.Executescalal ();
// conn.close ();
/// bindData ();
///}
///}
///
/// void bindData () {{)
/// cmd = new oledbcommand ("select newsId, en-tête, source, addtime à partir de la commande wqnews par addtime conception, 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 (objet Src, PageChangedEventArgs e) {{
/// pager.currentPageIndex = e.newPageIndex;
/// bindData ();
///}
///
/// </cript>
/// <meta http-equiv = "content-Language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text / html; charset = gb2312">
/// <meta name = "General" content = "editPlus">
/// <meta name = "auteur" content = "webdiyer ([e-mail protégé])"> ">">
/// </ head>
/// <body>
/// <form runat = "server" id = "form1">
/// <h2 align = "Center"> Exemple de pagination ASPNetPager </H2>
/// <asp: dataGrid id = "dg" runat = "server"
/// CellPadding = "4" Align = "Center" />
///
/// <webdiyer: aspnetpager runat = "server" id = "pager"
/// onPageChanged = "ChangePage"
/// horizontalal = "Centre"
///
/// pagesize = "8"
/// showInputbox = "toujours"
/// soumibuttonstyle = "Border: 1px solide # 000066; hauteur: 20px; largeur: 30px"
/// inputboxstyle = "Border: 1px # 0000FF Solid; Text-Adign: Centre"
/// soumibuttonText = "Tournez-vous"
/// urlpaging = "true"
/// urlPageIndexName = "PageIndex" />
/// </ form>
/// </ body>
/// </ html>
///]]> </code>
/// </ exampe>
[Browsable (vrai),
catégorie ("Paging"),
DefaultValue (false),
Descripting ("s'il faut utiliser l'URL pour transmettre les informations de pagination aux pages")]]
Urlpaging de Bool public
{{
obtenir
{{
Urlpaging de retour;
}
ensemble
{{
Urlpaging = valeur;
}
}
/// <résumé>
/// Obtenez-le ou définissez-le lorsque la méthode de pagination URL est activée, et le nom du paramètre de l'index de page est transmis dans l'URL est dans l'URL.
/// </summary>
/// <lmarks>
/// Cet attribut vous permet de personnaliser le nom du paramètre de l'index de page pour passer par l'index de la page de transmission URL pour éviter de répéter avec le nom du paramètre existant.
/// <p> La valeur par défaut de l'attribut est "page", c'est-à-dire que lorsque la pagination d'URL, l'URL affichée dans la barre d'adresse du navigateur est similaire à: </p> http://www.webdiyer.com / aspnetpager / échantillons / datagrid_url.aspx?
/// <p> Si la valeur est modifiée en "PageIndex", l'URL ci-dessus deviendra: </p> <p> http://www.webdiyer.com/aspnetpager/samples/datagrid_url.aspx?pageIndex = 2 </p>
/// </ Remarques>
[Browsable (vrai),
defaultValue ("page"),
catégorie ("Paging"),
Descripting ("Lorsque la méthode de pagination URL est activée, le nom du paramètre de l'index de page pour indiquer dans l'URL")]]]
UrlPageIndexname de la chaîne publique
{{
obtenir {return urlpageIndexName;}
set {urlPageIndexName = valeur;}
}
/// <résumé>
/// Obtenez ou définissez l'index de la page d'affichage actuelle.
/// </summary>
/// <Remarques> Utilisez cet attribut pour déterminer la page actuellement affichée dans le contrôle ASPNetPager. Cet attribut est également utilisé pour contrôler la page affichée par programmation.
/// <p> <b> Remarque: </b> Différent de CurrentPageIndex du contrôle DataGrid, la propriété CurrentPageIndex d'Aspnetpager commence à partir de 1. </p> </ Remarques>
[Readonly (vrai),
Browsable (false),
Descripting ("Index de la page d'affichage actuelle"),
catégorie ("Paging"),
DefaultValue (1),
DesignerserializationVisibility (conceptererializationVisibility.hidden)]]
Public int currentPageIndex
{{
obtenir
{{
objet cPage = ViewState ["currentPageIndex"];
int Pindex = (cPage == null)?
If (Pindex> PageCount && pageCount> 0)
Retour PageCount;
else if (Pindex <1)
Retour 1;
Return pindex;
}
ensemble
{{
int cPage = valeur;
if (cpage <1)
cPage = 1;
Else if (cPage> this.pageCount)
cPage = this.pageCount;
ViewState ["CurrentPageIndex"] = cPage;
}
}
/// <résumé>
/// Obtenez ou définissez le nombre total de tous les enregistrements qui doivent être paginés.
/// </summary>
/// <lmarks>
/// Lorsque la page est chargée pour la première fois, il doit être donné l'attribut à tout le nombre total d'enregistrements de pagination dans le tableau de données renvoyé de la procédure de stockage ou de l'instruction SQL. Sur la page de la page, la valeur est obtenue à partir de ViewState lors du retour, il évite donc l'accès à la base de données chaque fois que la pagination est évitée. Aspnetpager calcule le nombre total de pages requises par toutes les données en fonction du nombre total de données à paginer et des attributs <voir cref = "pagesize" /> à la pagination, c'est-à-dire la valeur de <voir cref = "pageCount" />.
/// </ Remarques>
/// <nexe>
/// L'exemple ci-dessous montre comment le nombre total d'enregistrements renvoyés de l'instruction SQL est attribué à l'attribut:
/// <p>
/// <code> <!
/// <html>
/// <A-Head>
/// <Title> Bienvenue sur webdiyer.com </Title>
/// <script runat = "server">
/// SQLConnection Conn;
/// SQLCommand CMD;
/// void page_load (objet Src, EventArgs e)
/// {
// Conn = new SqlConnection (configUrationsTetings.AppSettings ["Connstr"];
/// if (! Page.ispostback)
/// {
/// cmd = new sqlcommand ("SELECT COUNT (ID) From News", Conn);
// conn.open ();
/// pager.recordCount = (int) cmd.Executescalal ();
// conn.close ();
/// bindData ();
///}
///}
///
/// void bindData ()
/// {
/// cmd = new sqlcommand ("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 (objet SRC, PageChangedEventArgs e)
/// {
/// pager.currentPageIndex = e.newPageIndex;
/// bindData ();
///}
/// </cript>
/// <meta http-equiv = "content-Language" content = "zh-cn">
/// <meta http-equiv = "content-type" content = "text / html; charset = gb2312">
/// <meta name = "General" content = "editPlus">
/// <meta name = "auteur" content = "webdiyer ([e-mail protégé])"> ">">
/// </ head>
/// <body>
/// <form runat = "server" id = "form1">
/// <asp: dataGrid id = "datagrid1" runat = "server" />
///
/// <webdiyer: aspnetpager id = "pager" runat = "server"
/// pagesize = "8"
/// Numericbuttoncount = "8"
/// showCustomInfosection = "avant"
/// showInputbox = "toujours"
/// cssclass = "mypager"
/// horizontalal = "Centre"
/// onPageChanged = "ChangePage" />
///
/// </ form>
/// </ body>
/// </ html>
///]]>
/// </code> </p>
/// <p> Le code de procédure de stockage utilisé dans cet exemple est le suivant: </p>
/// <code> <!
/// Créer une procédure GetPagedNews
/// (@PageSize int,
@PageIndex int)
/// comme
/// Définissez NOCOUNT sur
/// Déclarer @indexable tab
/// Déclarer @pageLowerbound int
/// Déclarer @PageUpperBound int
/// Définissez @PageLowerBound = (@PageIndex -) * @ PageSize
/// set @ [e-mail protégé] [Protégé par e-mail]
/// définir RowCount @PageUpperBound
/// insérer dans @inDExtable (NID) Sélectionnez ID à partir de la commande de presse par Addtime Desc
/// sélectionnez O.ID, O.Title, O.Source, O.Addtime à partir de News
/// et t.id> @pagelowerbound et t.id <[e-mail protrly] commande par t.id
/// Définit Nocount
/// ALLER
///]]>
/// </code>
/// </ exampe>
[Browsable (false),
description("要分页的所有记录的总数,该值须在程序运行时设置,默认值为225是为设计时支持而设置的参照值。"),
category("data"),
defaultvalue(225)]
public int recordcount
{{
obtenir
{{
object obj=viewstate["recordcount"];
return (obj==null)?0:(int)obj;
}
set{viewstate["recordcount"]=value;}
}
/// <résumé>
/// 获取当前页之后未显示的页的总数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagesremain
{{
obtenir
{{
return pagecount-currentpageindex;
}
}
/// <résumé>
/// 获取或设置每页显示的项数。
/// </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
{{
obtenir
{{
object obj=viewstate["pagesize"];
return (obj==null)?10:(int)obj;
}
ensemble
{{
viewstate["pagesize"]=value;
}
}
/// <résumé>
/// 获取在当前页之后还未显示的剩余记录的项数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int recordsremain
{{
obtenir
{{
if(currentpageindex<pagecount)
return recordcount-(currentpageindex*pagesize);
return 0;}
}
/// <résumé>
/// 获取所有要分页的记录需要的总页数。
/// </summary>
[browsable(false),
designerserializationvisibility(designerserializationvisibility.hidden)]
public int pagecount
{{
get{return (int)math.ceiling((double)recordcount/(double)pagesize);}
}
#endregion
#region textbox and submit button
/// <résumé>
/// 获取或设置页索引文本框的显示方式。
/// </summary>
/// <remarks>
/// 页索引文件框允许用户手式输入要访问的页的索引,当页数非常多时,显示页索引文本框非常方便用户跳转到指定的页,默认情况下,该文本框只有在总页数大于或等于<see cref="showboxthreshold"/> 的值时才显示,否则不显示,要想该文本框任何时候都显示,请将其值设为always,若希望任何时候都不显示,则应设为never。
///</remarks>
[browsable(true),
description
category("文本框及提交按钮"),
defaultvalue(showinputbox.auto)]
public showinputbox showinputbox
{{
obtenir
{{
object obj=viewstate["showinputbox"];
return (obj==null)?showinputbox.auto:(showinputbox)obj;
}
set{viewstate["showinputbox"]=value;}
}
/// <résumé>
/// 获取或设置应用于页索引输入文本框的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css类名")]
public string inputboxclass
{{
obtenir
{{
return (string)viewstate["inputboxclass"];
}
ensemble
{{
if(value.trim().length>0)
viewstate["inputboxclass"]=value;
}
}
/// <résumé>
/// 获取或设置页索引输入文本框的css样式文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于页索引输入文本框的css样式文本")]
public string inputboxstyle
{{
obtenir
{{
return (string)viewstate["inputboxstyle"];
}
ensemble
{{
if(value.trim().length>0)
viewstate["inputboxstyle"]=value;
}
}
/// <résumé>
/// 获取或设置页索引页索引输入文本框前的文本字符串值。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("页索引输入文本框前的文本内容字符串")]
public string textbeforeinputbox
{{
obtenir
{{
return (string)viewstate["textbeforeinputbox"];
}
ensemble
{{
viewstate["textbeforeinputbox"]=value;
}
}
/// <résumé>
/// 获取或设置页索引文本输入框后的文本内容字符串值。
/// </summary>
[browsable(true),
defaultvalue(null),
category("文本框及提交按钮"),
description("页索引输入文本框后的文本内容字符串")]
public string textafterinputbox
{{
obtenir
{{
return (string)viewstate["textafterinputbox"];
}
ensemble
{{
viewstate["textafterinputbox"]=value;
}
}
/// <résumé>
/// 获取或设置提交按钮上的文本。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue("go"),
description("提交按钮上的文本")]
public string submitbuttontext
{{
obtenir
{{
object obj=viewstate["submitbuttontext"];
return (obj==null)?"go":(string)obj;
}
ensemble
{{
if(value.trim().length>0)
viewstate["submitbuttontext"]=value;
}
}
/// <résumé>
/// 获取或设置应用于提交按钮的css类名。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description
public string submitbuttonclass
{{
obtenir
{{
return (string)viewstate["submitbuttonclass"];
}
ensemble
{{
viewstate["submitbuttonclass"]=value;
}
}
/// <résumé>
/// 获取或设置应用于提交按钮的css样式。
/// </summary>
[browsable(true),
category("文本框及提交按钮"),
defaultvalue(null),
description("应用于提交按钮的css样式")]
public string submitbuttonstyle
{{
obtenir
{{
return (string)viewstate["submitbuttonstyle"];
}
ensemble
{{
viewstate["submitbuttonstyle"]=value;
}
}
/// <résumé>
/// 获取或设置自动显示页索引输入文本框的最低起始页数。
/// </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
{{
obtenir
{{
object obj=viewstate["showboxthreshold"];
return (obj==null)?30:(int)obj;
}
set{viewstate["showboxthreshold"]=value;}
}
#endregion
#region custominfosection
/// <résumé>
/// 获取或设置显示用户自定义信息区的方式。
/// </summary>
/// <remarks>
/// 该属性值设为left或right时会在分页导航元素左边或右边划出一个专门的区域来显示有关用户自定义信息,设为never时不显示。
/// </remarks>
[browsable(true),
description("显示当前页和总页数信息,默认值为不显示,值为showcustominfosection.left时将显示在页索引前,为showcustominfosection.right时将显示在页索引后"),
defaultvalue(showcustominfosection.never),
category("自定义信息区")]
public showcustominfosection showcustominfosection
{{
obtenir
{{
object obj=viewstate["showcustominfosection"];
return (obj==null)?showcustominfosection.never:(showcustominfosection)obj;
}
set{viewstate["showcustominfosection"]=value;}
}
/// <résumé>
/// 获取或设置用户自定义信息区文本的对齐方式。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(horizontalalign.left),
description("用户自定义信息区文本的对齐方式")]
public horizontalalign custominfotextalign
{{
obtenir
{{
object obj=viewstate["custominfotextalign"];
return (obj==null)?horizontalalign.left:(horizontalalign)obj;
}
ensemble
{{
viewstate["custominfotextalign"]=value;
}
}
/// <résumé>
/// 获取或设置用户自定义信息区的宽度。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(typeof(unit),"40%"),
description("用户自定义信息区的宽度")]
public unit custominfosectionwidth
{{
obtenir
{{
object obj=viewstate["custominfosectionwidth"];
return (obj==null)?unit.percentage(40):(unit)obj;
}
ensemble
{{
viewstate["custominfosectionwidth"]=value;
}
}
/// <résumé>
/// 获取或设置应用于用户自定义信息区的级联样式表类名。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Description
public string custominfoclass
{{
obtenir
{{
object obj=viewstate["custominfoclass"];
return (obj==null)?cssclass:(string)obj;
}
ensemble
{{
viewstate["custominfoclass"]=value;
}
}
/// <résumé>
/// 获取或设置应用于用户自定义信息区的css样式文本。
/// </summary>
/// <value>字符串值,要应用于用户自定义信息区的css样式文本。</value>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
description("应用于用户自定义信息区的css样式文本")]
public string custominfostyle
{{
obtenir
{{
object obj=viewstate["custominfostyle"];
return (obj==null)?getstylestring():(string)obj;
}
ensemble
{{
viewstate["custominfostyle"]=value;
}
}
/// <résumé>
/// 获取或设置在显示在用户自定义信息区的用户自定义文本。
/// </summary>
[browsable(true),
category("自定义信息区"),
defaultvalue(null),
Description
public string custominfotext
{{
obtenir
{{
return (string)viewstate["custominfotext"];
}
ensemble
{{
viewstate["custominfotext"]=value;
}
}
#endregion
#region others
/// <résumé>
/// 获取或设置一个值,该值指定是否总是显示aspnetpager分页按件,即使要分页的数据只有一页。
/// </summary>
/// <remarks>
/// 默认情况下,当要分页的数据小于两页时,aspnetpager不会在页面上显示任何内容,将此属性值设为true时,即使总页数只有一页,aspnetpager也将显示分页导航元素。
/// </remarks>
[browsable(true),
category("behavior"),
defaultvalue(false),
description("总是显示分页控件,即使要分页的数据只要一页")]
public bool alwaysshow
{{
obtenir
{{
object obj=viewstate["alwaysshow"];
return (obj==null)?false:(bool)obj;
}
ensemble
{{
viewstate["alwaysshow"]=value;
}
}
/// <résumé>
/// 获取或设置由aspnetpager 服务器控件在客户端呈现的级联样式表(css) 类。
/// </summary>
[browsable(true),
description("应用于控件的css类名"),
category("appearance"),
defaultvalue(null)]
public override string cssclass
{{
get{return base.cssclass;}
ensemble
{{
base.cssclass=value;
cssclassname=value;
}
}
/// <résumé>
/// 获取或设置一个值,该值指示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
{{
obtenir
{{
return base.enableviewstate;
}
ensemble
{{
base.enableviewstate=true;
}
}
/// <résumé>
/// 获取或设置当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入的页索引超出范围(大于最大页索引或小于最小页索引)时在客户端显示的错误信息。"),
defaultvalue("页数超出范围!"),
category("data")]
public string pageindexoutofrangeerrorstring
{{
obtenir
{{
object obj=viewstate["pageindexoutofrangeerrorstring"];
return (obj==null)?"页数超出范围!":(string)obj;
}
ensemble
{
viewstate["pageindexoutofrangeerrorstring"]=value;
}
}
/// <résumé>
/// 获取或设置当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。
/// </summary>
[browsable(true),
description("当用户输入无效的页索引(负值或非数字)时在客户端显示的错误信息。"),
defaultvalue("页索引无效!"),
category("data")]
public string invalidpageindexerrorstring
{{
obtenir
{
object obj=viewstate["invalidpageindexerrorstring"];
return (obj==null)?"页索引无效!":(string)obj;
}
ensemble
{
viewstate["invalidpageindexerrorstring"]=value;
}
}
#endregion
#endregion
#region control rendering logic
/// <résumé>
/// 重写<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;
essayer
{
index=int.parse(pageindex);
}
attraper {}
onpagechanged(new pagechangedeventargs(index));
}
autre
{
inputpageindex=page.request.form[this.uniqueid+"_input"];
}
base.onload(e);
}
/// <résumé>
/// 重写<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);
}
/// <résumé>
/// 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);
}
/// <résumé>
///重写<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 ("<! ------- because the total page is only one page, and the alwayShow attribute is set to false, the ASPNETPAGER does not show any content. If you want alwayShow attribute set to 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);
}
}
/// <résumé>
///重写<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();
}
/// <résumé>
/// 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 appareil.
/// </summary>
/// <param name="writer"><see cref="system.web.ui.htmltextwriter"/>,表示要在客户端呈现html 内容的输出流。</param>
protected override void rendercontents(htmltextwriter writer)
{
if(pagecount<=1&&!alwaysshow)
Retour;
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:
Utilisation du système;
Utilisation de System.Web.UI;
Utilisation de System.Web.Ui.WebControls;
using system.componentmodel;
namespace pageinfocontrol
{
/// <résumé>
///webcustomecontrol1的摘要说明
/// </summary>
[defaultproperty('totalrecord'),toolboxdata('<{0}:pageinfo runat=server></{0}:pageinfo>')]
public class pageinfo:system.web.ui.webcontrols.webcontrol,ipostbackeventhandler
{
#region construct method
/// <résumé>
///构造函数
/// </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;}
ensemble
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c)
{
_totalrecord=0;
Casser;
}
_totalrecord=value;
}
} [description('每页显示记录数'),bindable(true),category('behavior'),defaultvalue(0)]
public int pagesize
{
get{return _pagesize;}
ensemble
{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_pagesize=0;
Casser;
}
}
_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;}
ensemble
{{
foreach(char c in system.convert.tostring(value))
{
if(!char.isnumber(c))
{
_itemsize=10;
Casser;
}
}
_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());
}
/// <résumé>
///将此控件呈现给指定的输出参数
/// </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);
}
autre
{
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>';
autre
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);
}
autre
{
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>';
autre
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开发资料库,