Utiliser un HtmlTable ou un Table ?

Résolu
Signaler
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour à tous !

Je voudrais avoir votre avis :

Je dois construire une série de tableau, un tableau correspodant à un produit et qui comporte le libelle du produit, sa référence, son prix etc...
A l'heure actuel j'ai fait une premiere version avec la classe Table (controle serveur) et je trouve le chargement des pages
HYPER LONG !!!

Quelqu'un sait il pourquoi ?

J'ai donc pensé à utiliser un HTMLTable mais je voudrais avoir vos avis avant de me lancer.

Merci à tous !!!

7 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Salut,

Il y a grande chance que ca mettes legerement moins de temps.

Mais regardes dans un premier temps.
La requete si elle mets du temps a s'executée.
Avec le profiler ou l'analyseur si c'est sqlserveur derriere.

Ou dans le code.

Ensuite regardes si tu peux pas passer par des datagrid ou gridview et faire un binding dessus c'est peut etre plus rapide que de lire la collection et de faire le travail de remplissage a la main et 2 lignes de code suffit pour faire le remplir
datasource et databindind

Le rendu est le meme entre un htmltable et un serveur table
et si tu mets le viewstate a false, tu gagneras du temps aussi je pense.
Car le view state est additionnee au autre controle pour un tableau serveur.

J'attends tes résultats de tes tests

Bon courage
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Salut nhervagault !

Tout d'abord je tenais à te remercier pour ton aide !

Mon problème viens bien de mes requêtes je viens de vérifier.
Je suis en traint d'obtimiser tout ça, je viens déja de gagner deux secondes de chargement !

J'ai testé la propriété EnabledViewState à false mais le temps était quasiment identique.

En tout cas merci pour tout !
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Peux-tu mettre ta requete pour voir si des optimisations sont possibles.
Avec le nom de la base et le but de cette derniere.

Je peux regarder si elle est optimisable.
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
Il n'y a pas qu'une requête en faite !

J'ai une manière trés particulière de coder, j'te montre quand même ma requête principal :

Sont but et de me retourner tout les groupes (produits) de la catégorie en cours

public List<Groupe> GetGroupes()
{
 List<Groupe> lg = new List<Groupe>();

        if (this.Identifiant != 0)
        {            DbDataAdapter dda Db.CreateAdapter("SELECT G.*, Ga.*, M.* FROM Groupes G, Appartenir A, Gammes Ga, Marques M WHERE G.Grp_Id A.Apt_Grp_Id AND Ga.Gam_Id = G.Grp_Gam_Id AND M.Mar_Id = G.Grp_Mar_Id AND A.Apt_Cat_Id = @categorie;", BgWeb.Connexion);
            Db.AddParameter(dda.SelectCommand, "@categorie", this.Identifiant, MyaDbType.Int32);

            DataTable dt = new DataTable();
            Db.Fill(dda, dt);

            foreach (DataRow drEnCours in dt.Rows)
            {
                Groupe gEnCours = new Groupe(drEnCours);
                gEnCours.Gamme = new Gamme(drEnCours);
                gEnCours.Marque = new Marque(drEnCours);

                lg.Add(gEnCours);
            }
        }

        return lg;
}
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Ok

Deja ta requete sera plus rapide si tu n'utilisait pas la notation *
Mais que les champs nécessaires a remplir les collections
ensuite

si tu mettrais des inner join
avec la place de FROM TABLE1, TABLE2, TABLE3
ca irait plus vite

SELECT G.champ1, Ga.champ2, M.champ3 .......
 FROM Groupes G
INNER JOIN Appartenir A on
G.Grp_Id = A.Apt_Grp_Id

INNER JOIN Gammes Ga on
Ga.Gam_Id = G.Grp_Gam_Id

INNER JOIN Marques M on
M.Mar_Id = G.Grp_Mar_Id

WHERE  A.Apt_Cat_Id =
@categorie;

Apres dis moi ca va plus vite sutout les inner join?
Normalement oui car les inner join sont un genre de filtre

Alors que le where est un produit cartesien

exemple TABLE1 N enregitrements et TABLE2  M  enregistrements et TABLE 3  S  enregistrements
--> N*M*S Lignes
Puis apres filtre avec la conditions du where
les filtres sont en revacnhe appliqué directement au fur a mesure avec les inner join

Sinon en passant par une procédure stockée ca accèlere aussi car la procédure stockée sont plus facile pour le sgbd a optimiser.
Et son plus pres du moteur de données.
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
1 février 2013
1
tous les champs sont nécessaire !

Je viens de tester ta requête, il y a une erreur de syntaxe, je n'arrive pas à la trouver !

Merci encore pour ton aide
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Désolé je vois pas ou elle est l'erreur

c'est
du style
select * from tableA INNER JOIN tableB on tableA.FK = tableB.CLE