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 :

Custom control et OnRowCreated


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut Custom control et OnRowCreated
    Bonjour,

    J'ai un e extension d'une gridview afin de lui ajouter des fonctionnalités.

    Mon probleme est que dans la methode OnRowCreated la propriete SortExpression est toujours vide a l'utilisation de mon control sur une page aspx !!!

    Merci pour vos lumieres

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Lors que tu customises une GridView, il faut toujours checker si la SortExpression est vide ou pas. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    protected override void OnRowCreated(GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
           if (SortExpression != String.Empty)
              //Application du style pour le sort, ou autre action pour gérer le sort
        }
        
        base.OnRowCreated(e);
    }
    Après, si la valeur est toujours vide, il doit y avoir un problème dans ton code. Et là, sans plus de détails difficile de te répondre.

    En espérant t'avoir aidé.

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Je sais bien.

    Voila mon code :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    if (e.Row.RowType == DataControlRowType.Header)
                {
                    e.Row.CssClass = "header";
                    e.Row.Height = Unit.Pixel(10);
     
                    foreach (TableCell cell in e.Row.Cells)
                    {
                        if (cell.HasControls())
                        {
                            LinkButton button = cell.Controls[0] as LinkButton;
                            System.Web.UI.HtmlControls.HtmlGenericControl gv = new HtmlGenericControl("div");
                            Label lnkName = new Label();
                            lnkName.Text = button.Text;
                            if (button != null)
                            {
                                System.Web.UI.WebControls.Image imageSort = new System.Web.UI.WebControls.Image();
                                imageSort.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Library.Imgs.bg.gif");
     
                                if (this.SortExpression == button.CommandArgument)
                                {
                                    if (this.SortDirection == SortDirection.Ascending)
                                    {
                                        imageSort.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Library.Imgs.asc.gif");
                                    }
                                    else
                                    {
                                        imageSort.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Library.Imgs.DESC.gif"); ;
                                    }
                                }
     
                                gv.Controls.Add(lnkName);
                                gv.Controls.Add(imageSort);
                                button.Controls.Add(gv);
                            }
                        }
                    }
                }

    Il ne rentre jamais dans la condition if (this.SortExpression == button.CommandArgument) car this.SortExpression est toujours vide !!!!

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Hum, là comme ça, sans avoir bu mon café, je ne vois pas l'erreur . Peut-être la façon dont tu l'instancies...

    Sinon, si tu codes en ASP.NET 4.0, des améliorations sont apparues avec cette nouvelle version, dont les magiques :


    A défaut, cette méthode pour Customiser une GridView en utilisant l'event OnSorted fonctionne bien.

    En espérant t'avoir aidé.

  5. #5
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Je ne suis malheureusement pas en 4.0.

    J'ai vu ton lien et toujours pareil sortexpression est vide !!!!

    Je ne sais plus quoi faire la

  6. #6
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Citation Envoyé par topolino Voir le message
    J'ai vu ton lien et toujours pareil sortexpression est vide !!!!
    Dans ce cas il y a un problème quelque part dans ton implémentation. Il va te falloir poster le code de la GridView et celui de la page où tu l'utilises. Sans ça, difficile de te répondre.

  7. #7
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Tu as l'essentiel de mon code le reste c'est des proprietes.

    Et ds le code aspx
    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
     
     protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
            {
                if (ViewState[Tools.Init.SORT_DIRECTION_EXPRESSION] == null || (bool)ViewState[Tools.Init.SORT_DIRECTION_EXPRESSION] == false)
                {
                    ViewState[Tools.Init.SORT_DIRECTION_EXPRESSION] = true;
                }
                else
                {
                    ViewState[Tools.Init.SORT_DIRECTION_EXPRESSION] = false;
                }
     
                ViewState[Tools.Init.SORT_EXPRESSION] = e.SortExpression.ToString();
     
                PopulateData();
            }


    Pour l'instant pour combler cette lacune, j'ai ajouté 2 proprietes avec le nom de la colonne cliqué et sa direction

Discussions similaires

  1. [MFC] Création d'un 'custom control'
    Par r0d dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2006, 10h23
  2. [C#] custom control à partir d'une image / alpha blending
    Par Cyberwan dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/11/2005, 21h59
  3. Insertion d'un Custom Control: CMyListBox
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 21/06/2005, 15h26
  4. [C#] Custom Control : Recuperer valeur formulaire
    Par victorbru dans le forum ASP.NET
    Réponses: 22
    Dernier message: 21/04/2005, 09h02
  5. [C#] Custom Control et message de confirmation
    Par lancelot69 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/12/2004, 15h04

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