dans ASP.NET GridViews génère une table qui génère un conteneur parent div. Cela peut casser des mises en page CSS car il n'ya aucun moyen de fixer des styles à la DIV générée. Existe-t-il un moyen d'empêcher que la DIV de générer ou d'un moyen d'appliquer un style? p>
Ceci a été posé et marqué comme résolu ici mais MS Je viens de dire que la div est nécessaire pour la fonctionnalité de pagination et de tri. Suis-je pour comprendre que si je veux utiliser la fonctionnalité de pagination et de tri, je ne peux pas envelopper ma propre diveuve et appliquer un style? Merci p>
8 Réponses :
Vous pouvez le mettre à l'intérieur d'un écran ASP: panneau et définissez la propriété visible sur le panneau sur FALSE si la table est vide. P>
Merci mais je crois que vous avez mal interprété ma question. Je n'essaie pas de cacher une grille. J'essaie de débarrasser de la Div vide qui est généré autour de la table HTML (le balisage qu'un gridview génère) en tant que conteneur parent.
Vous pouvez définir une classe CSSclass explicite pour votre grille de grille pour utiliser.
.nameOfStyleClass { < Style stuff > }
Le problème est que je ne veux pas utiliser une classe sur une table. Les éléments de table se comportent différemment des éléments div et sont une douleur à utiliser CSS avec. Je préfère utiliser des divs si je peux. Merci.
Cela vient de styles la grilleview, pas la DIV qui est générée automatiquement autour de lui.
Je n'ai jamais fait cela, mais ma première hypothèse serait que vous pourriez saisir la sortie HTML rendue juste avant de ne pas atteindre le navigateur, retirez l'extérieur DIV, puis HTMLTextwrite de votre nouveau HTML rendu dans l'événement du prélendeur ou un utilisateur ou un contrôle personnalisé pour le faire. P>
Mais alors vous risquez de casser la fonctionnalité de la grilleview, mais si vous savez que vous n'utilisez pas les fonctionnalités qui utilisent la DIV, vous pourriez vous en sortir. P>
On dirait que cela fonctionnerait mais brisera probablement les fonctionnalités de tri / de pagination si je retiens la DIV. Je suppose qu'il n'y a pas de moyen intégré d'appliquer un style à la div et d'avoir une pagination et un tri. Je peux essayer d'attraper le HTML et d'ajouter une classe CSS à la DIV. Merci.
-1 Il s'agit d'une théorie non testée qui, même si elle est mise en œuvre, serait beaucoup plus lente et moins efficace que beaucoup des autres réponses ici.
même problème ici, omg c'est J'ai creusé dans le code gridview à l'aide de réflecteur et trouvé le problème: P > Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Me.PrepareControlHierarchy()
Me.RenderContents(writer)
End Sub
Une solution facile sans rendu Modification:
J'ai besoin d'appliquer un style sur le diview généré par la grille, car il brise ma mise en page. J'ai donc créé un DIV avec ID "myContainerdiv" et déplacé ma grille en informatique et Utiliser JQuery, j'applique des styles. p>
Exemple: p> i Mettez ce JavaScript en $ (document) .Ready (fonction ({})) ;.
Mais si vous utilisez UpdatePanel, comme je dois utiliser dans ce cas particulier, j'exécute ce $ (). CSS () dans chaque publication ASYNC. Sans que le style sera perdu si vous exécutez un peu de marché sur lequel votre grille est contenue. Mais j'exécute ce $ (). CSS () uniquement si un Panneau de mise à jour particulier est viré (pas besoin d'exécuter cette instruction JavaScript dans tous les autres post-relevage ASYNC) P> Exemple: P> <script type="text/javascrcipt" src="jquery.js"></script>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args) {
if (args.get_error() == undefined && sender._updatePanelClientIDs != null &&
sender._updatePanelClientIDs.length > 0 && sender._updatePanelClientIDs[0] == "<%= MyParticularUpdatePanel.ClientID %>") {
$("#myContainerDiv > div").css("display", "inline");
}
}
</script>
<asp:UpdatePanel runat="server" ID="MyParticularUpdatePanel" UpdateMode="Conditional" RenderMode="Inline">
<Triggers>
// Your triggers here...
</Triggers>
<ContentTemplate>
<div id="myContainerDiv" style="display:inline;">
<asp:GridView runat="server" ID="MyGridView" AutoGenerateColumns="false" Height="150px" EmptyDataText="No data.">
<Columns>
<asp:BoundField DataField="ID" HeaderText="My ID" />
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
Si vous êtes coincé avec une enveloppe non colléée (qu'il apparaît que vous êtes) mais que vous voulez faire respecter un style, donnez-lui un autre wrapper em> et appliquez votre style à la combinaison. Si une plaine div a un peu de rembourrage que vous souhaitez vous débarrasser (par exemple), cela dans l'ASPX: div#crushGvDiv, div#crushGvDiv div { padding: 0; margin: 0; }
Je dirais utiliser Div # Crusygvdiv> Div (avec le>) pour le rendre plus spécifique, au cas où il y a d'autres divs enfants de #crushgvdiv, mais une bonne réponse! Je l'utilise.
Merci de m'avoir encouragé à passer en revue les points plus fins, je n'utilise pas grand chose. "Combinateur enfant" et OO, "Combinateur de soeur adjacent" aussi. CSS-Tricks.com/child-and-Sibling-Selectors
La réponse des ians supprimons une grande partie du piratage de ceci, mais cela nécessite également
Plus d'effort de ma part. Je pense que nous pouvons avoir le meilleur des deux mondes si nous
Faites-le juste un peu différemment ... p> Nous ne voulons plus ajouter de «réactif de table» à notre source du tout. Nous voulons ajouter une "table réactive de table" à nos classes de grilleview. P> asp em> strong> p> Notre JavaScript doit simplement ajouter la classe «sensible à la table» au parent DIV de ces tables de classe des «tableaux réactifs de table» que nous avons ajoutées. p> ceci générera: p> Cette nouvelle sortie doit être relativement exempte de problèmes liés au piratage en raison du fait que nous avons exactement la même production à la fin, comme nous leverions autrement ( À l'exception de la classe supplémentaire sur la table), nous n'avons pas besoin de modifier ce code pour chaque table (ce qui signifie que nous pouvons l'écrire une fois et qu'elle sera automatiquement appliquée à toutes les grilles avec la classe "Table-sensible"), Et nous ne déplacons pas du tout \ Copier les données de la table (cela est important pour la vitesse, la pagination et le tri). Je sais que tout le monde dit qu'ils ont la meilleure réponse, mais je pense vraiment que c'est la meilleure façon absolue de gérer cela. P> Note: Je n'ai pas testé ce nouveau code mais cela fonctionnera probablement bien . em> p> p>
J'essayais également d'ajouter une table à bottestrap, mais je l'ai fait sans le
$ ("# <% = mygridview.clientid %> "). Parent (). AddClass ('Table-Responsive'); Code>
solution la plus simple et la meilleure à l'aide de la classe CSS "GridViewWrapperFix".
ASPX: P>
/* styles the div that gets auto generated around and asp.net gridview */ .gridViewWrapperFix > div { padding: 0; margin: 0; border: 3px solid red; }
"vide vide qui contient un grenades" - tee hee ;-d
haha, tu as raison, ça n'a aucun sens du tout
Moi aussi dans la même situation sans solution