2010-03-10 7 views
1

Comment puis-je obtenir plusieurs GridViews sur une seule page pour partager les mêmes largeurs de colonnes?Comment aligner des colonnes dans plusieurs GridViews

J'ai quatre GridViews avec (essentiellement) les mêmes colonnes dans chacun. Ils ont des en-têtes uniques et représentent des données provenant de différentes requêtes. Je souhaite optimiser la lisibilité en autorisant la taille dynamique des colonnes en fonction des données, mais je ne souhaite pas que chaque GridView le fasse de manière indépendante. Avoir des colonnes de même nom l'une au-dessus de l'autre avec des largeurs différentes semble très bâclée. Au lieu de cela, les quatre GridViews doivent choisir la même taille pour la colonne 1, la même taille pour la colonne 2, etc.

Dans les applications Windows, je crois qu'il existe une propriété appelée SharedSizeGroup qui vous permet de définir des colonnes de différents contrôles à collaborer pour décider de la taille optimale.

Cela peut-il être réalisé dans ASP.NET? Est-ce trop demander parce que les largeurs de colonnes dynamiques sont à la hauteur du navigateur?

Merci

Répondre

0

Est-ce trop demander parce que les largeurs de colonnes dynamiques sont à la hauteur du navigateur?

À peu près. Sauf si vous définissez explicitement la largeur de la colonne, le navigateur choisira - donc ASP.NET n'en a aucune connaissance. Vous pourriez probablement utiliser un peu de jQuery pour compenser:

$(function() { 
    var maxWidth = 0; 
    $('TBODY TR:first TD.col1').each(function() { 
     maxWidth = $(this).width > maxWidth ? $(this).width : maxWidth; 
    }); 

    $('TBODY TR:first TD.col1').width(maxWidth); 
}); 
+0

Merci pour l'info. Je ne pense pas que je vais jouer avec le réajustement des largeurs de colonnes moi-même. Je continuerais probablement à bricoler et ne pas être heureux avec lui jusqu'à ce que j'avais recréé toute la logique de dimensionnement de colonne dynamique trouvée dans un navigateur. :) Parce que mon projet n'est pas trop grand, je viens de changer le quatre en un seul gridView. Je regroupe les données de la requête dans une seule table de données avant de les lier puis j'utilise du javascript pour grossir la table avec des lignes de résumé, des en-têtes répétés, etc. séparant les différents blocs de données. – Owen

+0

@Owen - FWIW, mon extrait de code (non testé) définirait simplement la largeur au maximum du navigateur. C'est essentiellement ce que fait tout cela dans une seule table. –

+0

Ouais, c'est pourquoi je me voyais bricoler à l'infini. Ce comportement signifie que si la table A pense que la colonne 3 nécessite beaucoup de place, la table B pense que la colonne 1 a besoin de beaucoup de place et la table C pense que la colonne 7 a besoin de beaucoup de place. les tables. Soit cela devient large et nécessite des barres de défilement (si j'utilise des pixels) ou il écrase les colonnes pas si grandes que d'habitude si je normalise en pourcentages. – Owen

2

Je suis assez sûr que vous ne pouvez régler la largeur pour vous-même. Je ne pense pas que c'est une option qui vous permet de faire ce que vous cherchez.

Si vous utilisez asp: TemplateFields, asp: BoundFields, etc. pour former vos champs, vous pouvez utiliser ItemStyle-Largeur = "100px" pour régler la largeur de chaque colonne