Contrôle de datagride
Le contrôle DataGrid vous permet de générer une liste de formats de source de données riches. De plus, il prend également en charge les éléments de sélection avec d'autres opérations.
Les quatre exemples de cette section utilisent des tableaux qui incluent les informations du titre (titre, ID de titre, auteur, prix et date de publication). Toutes les données sont maintenues avec XML dans titresdb.xml. Lors de l'établissement d'une page pour représenter le contenu de ce tableau et sélectionnez des livres, ces exemples suivent la méthode incrémentielle. La liste de codes contient le texte du corps noir pour indiquer la modification effectuée par un échantillon construit dans l'exemple précédent.
Test à partir de titresdb.xml:
<hoot>
<schéma id = documentElement cibleNamespace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = urn: schémas-microsoft-com: xml-msdata>
<élément name = table>
<ComplexType Content = ElementSonly>
<élément name = title_id type = string> </element>
<élément name = title type = string> </element>
<élément name = au_name type = string> </element>
<nom de l'élément = prix msdata: dataType = System.currency
minoccurs = 0
Type = string> </element>
<élément name = pubdate type = timeInstant> </element>
</ ComplexType>
<Nique name = titleconstraint msdata: primaireKey = true>
<électeur>.
<Field> title_id </field>
</nique>
</element>
</dgema>
<documentElement>
<Title>
<Title_id> BU1032 </TITLE_ID>
<Title> Le guide de base de données de l'exécutif occupé </TITAL>
<Um_name> Marjorie Green </ Au_name>
<Prix> 19,99 </ Price>
<Subdate> 1991-06-12T07: 00: 00 </ubdate>
</TITAL>
Élastique
</ documentElement>
</ root>
Dans une application Web typique, afin d'obtenir l'évolutivité et les performances maximales, il est susceptible d'utiliser des services Web ou des objets commerciaux pour accéder aux données. Afin de simplifier ces exemples et de se concentrer sur l'utilisation de DataGrid au lieu d'accès aux données, nous choisissons de charger des données à la fois lorsque l'application démarre, et dans l'état d'application ASP dans Global.Aax Show.
Trunk de Global.asax:
public void application_onstart () {) {)
FileStream fs = null;
ensemble de données ds = null;
essayer {
fs = new FileStream (server.mappath (titresdb.xml), fileMode.open,
FileAccess.read);
ds = new DataSet ();
// Chargez les données dans le fichier XML dans l'ensemble de données
ds.readxml (fs);
} Enfin {
if (fs! = null) {
fs.close ();
fs = null;
}
}
// Cchestrate l'ensemble de données à grande vitesse à l'état d'application afin qu'il puisse être utilisé dans une seule page
application [titresDataset] = ds;
}
datagrid1
DataGrid1 illustre l'utilisation de base de DataGrid, qui explique comment le contrôle utilise le moindre code utilisateur pour générer une fonction riche.
FIGUE
Insérer à partir de dataGrid1.aspx:
<% @ Page Language = C # src = dataGrid.cs hérite = samples.datagridpage%>
Élastique
<Asp: dataGrid runat = server id = titresgrid>
</ ASP: DataGrid>
Le fichier .aspx ci-dessus a montré une instruction sans aucun attribution sans aucun attribution du contrôle de dataGrid.
dataGrid.cs:
échantillons d'espace de noms {
Élastique
Classe publique DataGridPage: page {
Titres DataGrid protégé;
Public icollection getTiTlesList () {
// Retorez la liste des titres de l'ensemble de données du cache de vitesse haute dans l'état d'application.
DataSet titresDataSet = (DataSet) Application [titresDataSet];
if (titresDataset! = null) {
Return titresDataSet.tables [titre] .DefaultView;
}
autre {
Retourner null;
}
}
Private void loadTitlesgrid () {) {)
// Recherchez les données de la base de données
icollection titresList = getTitlesList ();
// Définit la source de données du contrôle
titresgrid.datasource = titresList;
// et faire utiliser cette source de données pour construire son projet
titresgrid.databind ();
}
Override protégé vide Overoad (EventArgs e) {{
base.onload (e);
if (! IsPostback) {
// Voir cette page pour la première fois
LoadTitlesGrid ();
}
}
}
}
Le fichier .cs contient le code utilisé pour cette page. Ce code est le même que la fonction de code utilisée dans l'exemple Datalist1. Dans la première demande de cette page, il couvre la méthode en ligne pour récupérer les données et définir la propriété DataSource du contrôle avant d'appeler Databind. Cela fera que DataGrid créera son projet, qui sont les lignes nécessaires dans le tableau. Dans le processus de retour du traitement, DataGrid a ré-créé le projet à partir de l'état (cet état comprend le contenu cellulaire enregistré dans la dernière demande).
Cet exemple illustre la fonction de la propriété AutoGeenerateColumns du contrôle DataGrid. La valeur par défaut de cet attribut est vraie. Lorsqu'il est défini sur true, DataGrid utilisera la réflexion pour vérifier sa source de données et ses objets et créer une colonne pour chaque attribut ou champ public. Dans cet exemple, le contrôle représente tous les champs actuels de la table "Title". Cette fonctionnalité permet à la liste des moindres code utilisateur de générer une liste de toute source de données rapidement et facilement.
Chaque type de colonne automatique est BoundColumn. Ce type de colonne convertit la valeur d'attribut qui lui est associée en une chaîne qui doit être utilisée comme fenêtre.
dataGrid2
DataGrid2 explique le jeu DataGrid par les colonnes définies dans le fichier .aspx.
Figure 5. Exemples générés à l'aide de la colonne DataGrid spécifiée
Extrait de DataGrid2.aspx:
<% @ Page Language = C # src = dataGrid.cs hérite = samples.datagridpage%>
Élastique
<Asp: dataGrid runat = server id = titresgrid
AutogenerateColumns = false>
<Poperty name = colonnes>
<Asp: boundcolumn headtelText = title datafield = title />
<Asp: BoundColumn HeadExText = Author DataField = Au_Name />
<Asp: BoundColumn HeaderText = Date publié DataField = PubDate />
<Asp: BoundColumn HeadElText = Price DataField = Price />
</ Propriété>
</ ASP: DataGrid>
Ce fichier .aspx a montré un contrôle DataGrid avec une colonne définie par les utilisateurs. Cet exemple utilise les mêmes fichiers supportés de code que DataGrid1 car aucun code n'est requis.
La propriété AutoGeenerateColumns de DataGrid est définie sur Fake, afin d'empêcher le contrôle de générer automatiquement des colonnes, et permet aux utilisateurs d'être responsables de la définition de colonnes qui seront représentées dans le tableau.
Il y a de nombreux avantages:
Vous pouvez contrôler l'ordre des colonnes. Liste dans l'ordre d'une déclaration. D'un autre côté, la colonne automatique est représentée par l'ordre récupéré par l'image.
Vous pouvez spécifier l'en-tête de chaque colonne avec la propriété en en-tête de colonne. Dans l'exemple précédent, l'en-tête d'étiquette indique le nom du champ, qui peut ne pas être approprié. Lorsque vous utilisez des contrôles dans ce mode, Columbns propose également d'autres attributs setables.
Le type de colonne automatique est toujours BoundColumn. Spécifiez le jeu de colonne afin que l'utilisateur puisse contrôler le type de chaque colonne.
datagrid3
DataGrid3 est construit sur DataGrid2 en ajoutant du formatage visuel et du formatage.
Figure 6. Exemples générés par le dataGrid qui définit le style et les attributs de format
Extrait de dataGrid3.aspx:
<% @ Page Language = C # src = dataGrid.cs hérite = samples.datagridpage%>
Élastique
<Asp: dataGrid runat = server id = titresgrid
AutogenerateColumns = false
largeur = 80%
BackColor = blanc
BorderWidth = 1px Borderstyle = Solid CellPadding = 2 CellSpace = 0
BorderColor = Tan
FONT-NAME = Song Style Font-Size = 8pt>
<Poperty name = colonnes>
<Asp: boundcolumn headtelText = title datafield = title />
<Asp: BoundColumn HeadExText = Author DataField = Au_Name />
<ASP: BoundColumn HeaderText = Date publié DataField = Pubdate
dataformatString = {0: mmm yyyy} />
<ASP: BoundColumn HeadelText = Price DataField = Price
DataformatString = {0: c}>
<Poperty name = itemStyle>
<Asp: tableItemStyle horizontalalign = droite />
</ Propriété>
</ asp: bounddColumn>
</ Propriété>
<Poperty Name = Headstyle>
<ASP: TableItemStyle BackColor = Darkred Forecolor = White
Font-Black = True />
</ Propriété>
<Poperty name = itemStyle>
<ASP: TableItemStyle Fencolor = DarkslateBlue />
</ Propriété>
<POPERTY NAME = alternativetemStyle>
<Asp: TableItemStyle backcolor = beige />
</ Propriété>
</ ASP: DataGrid>
Ce fichier .aspx a montré la même instruction de contrôle DataGrid que la précédente et définira divers attributs de style. Cela conduira à une représentation plus attractive. Il n'est toujours pas nécessaire d'apporter des modifications au code et l'utilisation du code pris en charge par les mêmes exemples que les exemples précédents.
Parce qu'il est obtenu à partir de WebControl, le contrôle de DataGrid Hérite des attributs de style tels que la largeur, le backcolor, le borderstyle et le nom. De plus, DataGrid propose des attributs tels que CellPadding, qui sont spécifiques à la table. Ces attributs sont autorisés à personnaliser les contrôles dans l'ensemble.
La déclaration affiche également plusieurs ensembles de styles de projet, tels que le style des en-têtes et l'alternativetemstyle. Ces styles contrôlent l'apparence de leurs éléments correspondants. Veuillez noter que le style du style apparaît dans cet exemple. Les projets alternatifs sont les mêmes que les perspectives des projets généraux, car leurs styles sont des combinaisons de type alternatif et de style. Enfin, cet exemple explique également le style d'une colonne spécifique via le texte dans la colonne de prix à droite -o-alignement.
DataGrid vous permet également de formater le contenu texte dans sa cellule. Ceci est terminé en définissant la valeur de propriété DataFormatString de BoundColumn. La colonne utilise son format pour formater le contenu cellulaire de String.format. Cet attribut peut être prédéfini ou attaché à tout contenu avec le type de formatage (comme la date ou la devise). De plus, parce que le formatage considère le CultureInfo et les demandes de la page actuelle, il prend également en charge la mondialisation. S'il n'y a pas de format spécifié, utilisez la méthode de toString de cette valeur.
datagrid4
DataGrid4 explique comment utiliser la sélection dans DataGrid en gérant l'événement SelectedIndexchanged.
Figure 7. Exemples générés en autorisant les éléments contenant des datagrid
Test à partir de dataGrid4.aspx:
<% @ Page Language = C # src = dataGrid4.cs hérite = échantillons.datagrid4page%>
Élastique
<Asp: dataGrid runat = server id = titresgrid
AutogenerateColumns = false
largeur = 80%
BackColor = blanc
BorderWidth = 1px Borderstyle = Solid CellPadding = 2 CellSpace = 0
BorderColor = Tan
FONT-NAME = Song Style Font-Size = 8pt
datakeyfield = title_id
onselectedExchanged = onselectExchangeDedesgrid>
<Poperty name = colonnes>
<Asp: ButtonColumn Text = SELECT Command = select />
<Asp: boundcolumn headtelText = title datafield = title />
<Asp: BoundColumn HeadExText = Author DataField = Au_Name />
<ASP: BoundColumn HeaderText = Date publié DataField = Pubdate
dataformatString = {0: mmm yyyy} />
<ASP: BoundColumn HeadelText = Price DataField = Price
DataformatString = {0: c}>
<Poperty name = itemStyle>
<Asp: tableItemStyle horizontalalign = droite />
</ Propriété>
</ asp: bounddColumn>
</ Propriété>
<Poperty Name = Headstyle>
<ASP: TableItemStyle BackColor = Darkred Forecolor = White
Font-Black = True />
</ Propriété>
<Poperty name = itemStyle>
<ASP: TableItemStyle Fencolor = DarkslateBlue />
</ Propriété>
<POPERTY NAME = alternativetemStyle>
<Asp: TableItemStyle backcolor = beige />
</ Propriété>
<Poperty name = selectDitemStyle>
<Asp: TableItemStyle BackColor = Palegoldenrod Font-Bold = True />
</ Propriété>
</ ASP: DataGrid>
Élastique
<asp: label runat = server id = selectInfolabel font-name = Song Style font-size = 8pt />
Dans le fichier .aspx, un programme de traitement d'événements a été enregistré pour l'événement SelectedIndexchanged de DataGrid. Ce programme de traitement des incidents est implémenté dans un fichier pris en charge du code. Un ButtonColumn, qui a été ajouté au jeu de colonne comme "SELECT", fait représenter DataGrid une colonne supplémentaire contenant le bouton Sélectionner pour chaque projet. Dans le même temps, SelectedItemStyle est spécifié. Ce style est utilisé pour distinguer les projets visuellement. Enfin, l'attribut DatakeyField de DataGrid est spécifié. Ce champ sera placé dans la collection DataGrid Datakeys, qui sera utilisé dans des fichiers avec la prise en charge du code.
dataGrid4.cs:
échantillons d'espace de noms {
Élastique
Classe publique DataGrid4Page: page {
Titres DataGrid protégé;
Recherche d'étiquette protégéInfolabel;
Public icollection getTiTlesList () {
// Retorez la liste des titres de l'ensemble de données du cache de vitesse haute dans l'état d'application.
DataSet titresDataSet = (DataSet) Application [titresDataSet];
if (titresDataset! = null) {
Return titresDataSet.tables [titre] .DefaultView;
}
autre {
Retourner null;
}
}
Private void loadTitlesgrid () {) {)
// Recherchez les données de la base de données
icollection titresList = getTitlesList ();
// Définit la source de données du contrôle et réinitialise son choix,
titresgrid.datasource = titresList;
titresgrid.selectDindex = -1;
// et faire en sorte que le contrôle utilise cette source de données pour construire son projet
titresgrid.databind ();
// Mettre à jour les informations de titre sélectionnées
UpdateSelectTitalInfo ();
}
Override protégé vide Overoad (EventArgs e) {{
base.onload (e);
if (! IsPostback) {
// Voir cette page pour la première fois
LoadTitlesGrid ();
}
}
// Traitement l'événement OnSelectIndIndIndIndIndExchanged
Protégé vide onselectedIndexChangedTitlesgrid (expéditeur d'objet,
Eventargs e) {
UpdateSelectTitalInfo ();
}
Private void updateSelecttitiveInfo () {{) {
// Obtenez l'index sélectionné
int seLindex = titresgrid.selectDindex;
String Selfieid = null;
String SelectInfo;
if (Selindex! = -1) {{{
// Afficher le champ clé du titre sélectionné
SelTitleid = (String) titresgrid.data [seLindex];
SELECTIONInfo = ID du titre sélectionné: + SelTitleid;
}
autre {
selectInfo = aucun titre n'est actuellement sélectionné.;
}
selectInfolabel.text = selectInfo;
}
}
}
Ce fichier .cs contient la logique de la gestion de l'événement SelectedIndexchaned et la logique de l'ID du titre sélectionné sur DataGrid. DataGrid gère l'événement de commande, qui est déclenché par des boutons inclus dans son projet. Il reconnaît la commande standard "SELECT", ce qui le fait modifier sa propriété SelectedIndex et déclenche cet incident pour modifier le code de la notification de l'utilisateur.
Dans le processus d'implémentation des programmes de traitement d'événements, l'exemple de code appelle la méthode UpdateSelectTitleinfo. Cette méthode est responsable de l'affichage des informations sur le titre du livre sélectionné. Dans un schéma plus réaliste, cet ID peut être utilisé pour lier une page pour afficher plus de détails sur le titre sélectionné.
ID est récupéré en visitant la collection de données de données. La collection est définie en raison de l'attribut DatakeyField. Habituellement, définissez-le comme le mot-clé principal ou d'autres champs qui peuvent être identifiés par le ménage et utilisez ces informations comme des directives dans la requête de base de données Suivre ou les données de filtre.
Cet exemple montre comment soutenir davantage les opérations telles que la sélection d'objets dans la source de données en plus des objets uniquement dans la source de données. DataGrid contient la prise en charge de plusieurs autres fonctionnalités (telles que le tri, la pagination, les éditeurs sur le site et les templatecolumns). Cependant, ces caractéristiques spécifiques dépassent la portée de la discussion de cet article et seront discutées dans les futurs articles.
Répéteur, datalist ou dataGrid?
Répéter, datalist et contrôle des modèles de programmation publique partagés. En même temps, chaque contrôle est conçu pour se concentrer sur un schéma spécifique. Cette section décrit la fonction de la hiérarchie de contrôle et la fonction de chaque contrôle, ainsi qu'un exemple de la solution typique que chaque contrôle peut être utilisé.
Comme vous pouvez le voir dans la structure des classes ci-dessous, le répéteur est un petit contrôle léger. Il hérite uniquement des fonctions de la classe de contrôle de base, telles que les attributs d'ID et les ensembles de sous-témoins. D'un autre côté, le contrôle des données et le contrôle DataGrid héritent de la fonction WebControl, tels que les attributs de style et d'apparence.
Figure 8. Liste -Tranding Control de la structure au niveau de la classe
En termes de modèles d'objets, le contrôle du répéteur est le contrôle le plus simple. Il s'agit également du plus petit contrôle de liaison des données et fondamentalement différent, c'est-à-dire qu'il ne force aucune disposition d'interface utilisateur spéciale. La méthode d'indication finale suit la méthode de génération de texte. Ce contrôle ne fournit aucune prise en charge construite pour les styles et les attributs d'apparence ou les comportements. C'est un excellent choix pour une solution qui doit être entièrement contrôlée.
Le contrôle du DataList est un répéteur forcé d'utiliser la disposition de la colonne ou la disposition du flux. Il hérite des attributs d'apparence implémentés dans WebControl et ajoute d'autres attributs de style qui conviennent aux éléments qu'il a créés. Le contrôle des données de données comprend également la prise en charge des opérations standard de son projet (telles que la sélection, l'édition et la suppression). Il est très adapté au flux de séquence du niveau ou des projets verticaux distribués en ligne ou en ligne.
Le contrôle DataGrid est obligé d'utiliser la liste ou la disposition des lignes. Semblable à Datalist, ce contrôle fournit des styles et des attributs d'apparence. En plus de sélectionner et d'édition, DataGrid prend également en charge les opérations avancées sur la collecte de l'ensemble du projet, telles que les pages et le tri. L'une des principales différences entre DataGrid et DataList est que DataGrid ne contient aucun modèle d'attributs, c'est-à-dire le projet ou le non-modèle du contrôle DataGrid. Cependant, ajoutez TemplateColumn au dataGrid pour utiliser le modèle dans une colonne spécifique.
Le tableau suivant est un résumé de la fonction fournie par le contrôle de liaison de la liste.
Datalist DataList DataGrid
Le modèle est (requis) ou dans les colonnes (requises) (facultative)
La disposition de la liste est-elle?
Est la disposition du flux
La mise en page du style de distribution / colonne de journaux est-elle?
Si le style et les attributs d'apparence sont
Sélectionnez si oui
Modifier
Est-ce supprimé?
Pas de pagination
Est-ce trié?
Ressources connexes
Avec les exemples QuickStart publiés par Microsoft .NET Framework SDK, il y avait plusieurs exemples de ces contrôles et des exemples qui expliquaient les données d'accès aux données avec XML et services Web. Le document joint au SDK comprend les données conceptuelles de la rubrique pertinente, telles que le cadre de la page ASP + et le contrôle du serveur, et la bibliographie de référence du modèle d'objet dans le cadre du contrôle de ce cadre.