begin process at 2012 02 13 22:22:38
  Trouver un code source :
 
dans
 

11 commentaire(s) de apacheswiss sur des sources sur tout CodeS-SourceS

Déposé sur Recuperer l'instance d'un control à partir de son clientid

et modifer le code
if (_clientID.Contains(child.ClientId)
{
     c = getControlFromClientIDInternal(child);
     if (c != null)
     {
          _clientID = string.Empty;
          return c;
     }
}
Posté le : 04/07/2006 23:05:51

Déposé sur Recuperer l'instance d'un control à partir de son clientid

il doit manquer un return null a la fin du foreach (Control inexistant)
Posté le : 04/07/2006 22:55:56

Déposé sur Recuperer l'instance d'un control à partir de son clientid

désolé (indentation)
je verrais un truc du genre:
ne sais pas si ca fonctionne, pas tester... merci de me dire mes erreurs... j'apprends tjs.


internal static Control getControlFromClientID(Page page, String ClientID)
{
    _clientID = ClientID;
    Control c = page.FindControl(ClientID);
    if (c != null)
       return c;
  
     return getControlFromClientIDInternal(page);
}
  
private static Control getControlFromClientIDInternal(Control Container)
{
    Control c;
    if (_clientID.Length > Container.ClientID.Length)
    {
         foreach (Control child in Container.Controls)
         {
             if (child.Controls.Count > 0)
             {
                 if (_clientID.Contains(child.ClientId)
                 {
                     getControlFromClientIDInternal(child);
                      
                 }
             }
         }
    }
    elseif(_clientID == Container.ClientID)
    {
        return container;
    
    }
    else
    {
        return null;
    }
}
Posté le : 04/07/2006 22:48:53

Déposé sur Recuperer l'instance d'un control à partir de son clientid

je verrais un truc du genre:
ne sais pas si ca fonctionne, pas tester... merci de me dire mes erreurs... j'apprends tjs.


internal static Control getControlFromClientID(Page page, String ClientID)
        {
            _clientID = ClientID;
  
            Control c = page.FindControl(ClientID);
            if (c != null)
                return c;
  
            return getControlFromClientIDInternal(page);
        }
  
        /// <summary>
        /// Obtain a control from a container
        /// </summary>
        /// <param name="Container"></param>
        /// <returns>use recursivity</returns>
        /// <remarks>the _clientID params is extern to not put into stack the value each call : better performance</remarks>
        private static Control getControlFromClientIDInternal(Control Container)
        {
            Control c;
            if (_clientID.Length > Container.ClientID.Length)
            {
foreach (Control child in Container.Controls)
             {
                 if (child.Controls.Count > 0)
                 {
if (_clientID.Contains(child.ClientId)
                     {
    getControlFromClientIDInternal(child);
                       
                     }
}
                }
            }
    elseif(_clientID == Container.ClientID)
    {
return container;
    
            }
    else
    {
           return null;
    }
        }
Posté le : 04/07/2006 22:46:07

Déposé sur Recuperer l'instance d'un control à partir de son clientid

excuse moi, mais c'est un exemple de quoi?
de comment construire l'Unique Id des enfant d'un contrôl web?

le but du code présenté au début n'est pa celui la..
le but du code présenté était de récupérer un control en ne connaissant que sont ID..
donc il faut trouver tous ces parent.. et sans requête SQL...

donc il faut d'abord bouclé les contrôle de ta page, pour troiver le "super parent"
et ensuite parcourir "tout" les enfants de ce contrôle et ne pas parcourir les enfant (du super parent) d'un contrôl s'il n'est pas dans l'unique ID du contrôle rechercher..
Posté le : 04/07/2006 22:22:40

Déposé sur Recuperer l'instance d'un control à partir de son clientid

2 boucle en un peut plus compliquée.. tu es plus ou moins obligé de faire de la récursivité (arrétée a plusieures reprise) dans la branche trouvée..
Posté le : 04/07/2006 21:39:24

Déposé sur Recuperer l'instance d'un control à partir de son clientid

désolé......
mais lors d'un return dans ta fonction recursive, tu sort de ta récursivité...
tu tu rappelle ta fonction, c'est récursif...

je ne vois pas ou tu évite...

je suis d'accord avec toi au sujet de l'arbre... si tu cherche d'abord la branche, et ensuite tu parcoours la branche, ce n'est plus récursif.. tu ne fais que 2 boucle.
Posté le : 04/07/2006 21:36:38

Déposé sur Recuperer l'instance d'un control à partir de son clientid

je pense aussi...
moi je voulais juste débatre sur.
Et finalement, un vieux de la vielle m'a appris il y a bien longtemps que la récursivité pouvait être évitée si la dernière instruction est un return ;)

qui ne veut pas dire grand chose à part arrêter tout une fois qu'on a trouvé ce qu'on cherche...
Posté le : 04/07/2006 20:55:44

Déposé sur Recuperer l'instance d'un control à partir de son clientid

si tu utilise la recursivité, c'est que tu n'as que le nom qui est sur la porte.. mais pas la rue.. donc pour trouver cette porte tu dois te taper toutes les rues
Posté le : 04/07/2006 20:46:19

Déposé sur Recuperer l'instance d'un control à partir de son clientid

d'accord... mais si tu ne sais pas qui est le parent... tu dois te taper les quatre routes...
Posté le : 04/07/2006 20:44:33

1 2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,872 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales