IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Comment surcharger la classe DataGrid ?


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 22
    Points
    22
    Par défaut [C#] Comment surcharger la classe DataGrid ?
    Bonjour à tous,

    Voilà mon problème, je souhaiterais surcharger la class System.Web.UI.WebControls.DataGrid pour ajouter/surcharger des méthodes. Par exemple, surcharger la méthode DataBind(), pour que le dataGrid soit invisible si aucune ligne n'est affichée.

    Je pensait faire qqch dans se goût là (cf le code ci-dessous), mais lors de la compilation, il veut que je remplace toutes mes déclarations de datagrid :
    Au lieu de les déclarer comme ça : System.Web.UI.WebControls.DataGrid myDataGrid;
    Il veut que je les déclare comme ceci : myNamespace.DataGrid myDataGrid;

    C'est cette erreur que je ne souhaite plus avoir, je veux garder ma déclaration System.Web.UI.WebControls.DataGrid myDataGrid;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    namespace myNamespace 
    {
     
    	public class DataGrid : System.Web.UI.WebControls.DataGrid
    	{
    		/// <summary>
    		/// Surcharge de la méthode DataBind
    		/// </summary>
    		public override void DataBind()
    		{
    			// Chargement des données
    			this.DataBind();
     
    			// Vérification du nombre de ligne
    			if(this.items.Count < 1)
    				this.Visible = false;
    			else
    				this.Visible = true;
    		}
    	}
    D'avance pour vos réponse
    Doz
    Compétence : VB, vbscript, ASP/ASP.net, CSS, algo, SQL
    Outils : Visual Studio 6, Dreamweaver/Frontpage, SQL Enterprise

  2. #2
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Je comprend pas bien ce que tu veux faire. Si tu déclare une nouvelle classe DataGrid qui hérite de la System.Web.UI.WebControls.DataGrid, c'est ta nouvelle classe qui tu dois utiliser.
    Pourquoi veux-tu déclarer tes DataGrid avec System.Web.UI.WebControls.DataGrid myDataGrid ???

    Sinon pour la classe dont tu donnes le code, elle compile sans problème (enfin en remplacant items par Items)
    Bonne journée

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    Normalement ca ne s'affiche une datagrid quand il n'y a pas de données.
    ca n'est pas tres logique ce que tu veux. soit tu utilises ta grid soit celle de microsoft.comment veux tu apres que le compilo sache quelle méthode DataBind utilisée.
    tu peux garder ta déclaration que si tu fais toi même instantiation de ta datagrid.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Bon je vais essaye d'être plus clair
    DoRiane > La compilation passe mais il veut me faire changer toutes mes déclarations dans mon projet. Ce que j'aimerais éviter.

    rattlehead > Quand un datagrid n'a aucun item, il affiche quand même la barre des titres (ce qui n'est pas trés joli !). Le fait de rendre invisible le dataGrid n'était quand exemple. Au final, j'aimerais ajouter des méthodes permettant l'initialisation du DataGrid.



    Ce que je veux c'est surchager la class DataGrid du FrameWork, mais garder la possibilité, de poser le dataGrid surcharger, en le prenant dans la barre d'outil et en faisant un glisser/déposer.
    Lors du glisser/déposer, Visual Studio déclare le dataGrid en utilisant l'espace de nom System.Web.UI.WebControls.DataGrid

    C'est pour cela que je veux surcharger directement la class DataGrid sans créer "mon" datagrid.
    Compétence : VB, vbscript, ASP/ASP.net, CSS, algo, SQL
    Outils : Visual Studio 6, Dreamweaver/Frontpage, SQL Enterprise

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    en fait en 2.0 s'il n'y a pas de données la gridview ne s'affiche pas.

    mais comment veux tu surcharger sans créer une nouvelle classe ;-)
    c'est pour ca que je disais que tu seras obligée d'instancier à la mano ta nouvelle classe. tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System...DataGrid grid =  new MaDataGrid();

  6. #6
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    Si j'ai bien compris ton problème, la réponse est non, tu ne peux pas surcharger une classe existante d'ailleurs dans ce cas on ne parle pas de surcharge : il s'agit tout simplement de rajouter des méthodes.

    Est-ce que ton problème est que tu faire une déclaration comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:DataGrid runat="server"></asp:DataGrid>
    et que avec ta nouvelle classe tu ne peux plus?
    Bonne journée

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    rattlehead > je suis encore sur le framework 1.1
    mais comment veux tu surcharger sans créer une nouvelle classe
    Justement je cherche à savoir si c'est possible

    DoRiane >
    Est-ce que ton problème est que tu faire une déclaration comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:DataGrid runat="server"></asp:DataGrid>
    et que avec ta nouvelle classe tu ne peux plus?
    En effet, je veux garder cette syntaxe là. Mais lors de la compilation, il me jete.
    Compétence : VB, vbscript, ASP/ASP.net, CSS, algo, SQL
    Outils : Visual Studio 6, Dreamweaver/Frontpage, SQL Enterprise

  8. #8
    Membre régulier Avatar de DoRiane
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 110
    Points
    110
    Par défaut
    rattlehead > je suis encore sur le framework 1.1

    Citation:
    mais comment veux tu surcharger sans créer une nouvelle classe

    Justement je cherche à savoir si c'est possible
    La réponse est non ce n'est pas possible

    Par contre,
    une fois que tu as compilé ta classe avec le nameSpace MyNameSpace, tu peux faire la déclaration suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <%@ Register TagPrefix="MyTag" Namespace="MyNameSpace" Assembly="MyNameSpace" %>
    puis dans ton code tu peux utiliser ton nouveau datagrid de la facon suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <MyTag:MyDataGrid runat="server"></MyTag:MyDataGrid>
    Bonne journée

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Merci à tous (DoRiane et rattlehead) pour vos réponses.

    Je me contenterais de créer mon contrôle utilisateur qui hérite de la classe DataGrid. Le seul problème est que le design n'est pas actif mais c'est un moindre mal.

    Je marque quand même le sujet résolu

    Merci
    Dozer
    Compétence : VB, vbscript, ASP/ASP.net, CSS, algo, SQL
    Outils : Visual Studio 6, Dreamweaver/Frontpage, SQL Enterprise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/05/2014, 14h51
  2. Réponses: 3
    Dernier message: 02/03/2010, 08h16
  3. Comment surcharger la méthode OnClose d'un TFrame ?
    Par sdebrois dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/01/2005, 20h57
  4. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30
  5. [Plugin] Comment instantier certaines classes de ANT ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 01/04/2004, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo