0

J'ai écrit un contrôle serveur qui étend le contrôle .net Gridview standard.Extension du contrôle .net: Comment empêcher l'affichage d'un attribut HTML?

Cependant, par défaut, le contrôle standard gridview ajoute une border = « 0 » attribut à la balise html qu'il produit, et je veux éviter que cet attribut soit rendu par mon contrôle serveur.

Je pourrais probablement utiliser ScriptManager pour ajouter un peu de Javascript qui supprime l'attribut une fois que la page sur laquelle le contrôle a été chargé, mais cela semble un peu maladroit et j'espérais que quelqu'un pourrait me dire comment le faire proprement en ajoutant, par exemple, this.Attributes.Remove ("border"); à l'événement PreRender du contrôle ou quelque chose de similaire (qui n'a pas fonctionné d'ailleurs, ou je n'aurais pas à poser la question)

+1

Jetez un coup d'œil aux adaptateurs de contrôle. – Dai

+0

J'ai jeté un coup d'oeil sur les adaptateurs 'Css Friendly' à http://www.asp.net/cssadapters/ - mais cet adaptateur, et je suppose que d'autres aussi, remplacer la méthode RenderControl et implémenter leur propre code pour le rendu d'un gridview. Il semble énorme exagérer juste pour empêcher un attribut d'être rendu. – paulH

Répondre

0

J'utilise un gridview devexpress donc ça pourrait être un peu différent, mais j'ai remarqué la même chose qui se passe, et j'ajouté

grid.Attributes["border"] = ""; 

à l'événement de chargement de la page, et non plus la frontière affichée en HTML. Un peu un hack mais ça a marché pour moi.

+0

Essayé cela et le seul effet est que plutôt que d'être rendu avec border = "0", le gridview a été rendu avec border = "1". Notez que mon problème n'est pas de savoir si la table affiche une bordure, mais de supprimer l'attribut de bordure obsolète du code HTML affiché. – paulH

+0

Ah, avec devexpress, il a totalement enlevé l'attribut border, mais seulement à partir de l'étiquette la plus externe associée à la grille. Je comprends votre problème, j'ai regardé dans le contrôle des adaptateurs et oui, il semble un peu beaucoup à jouer avec juste pour supprimer un attribut, mais quelle est la possibilité au lieu de recréer le rendu du contrôle entier, vous simplement «copier» sur le adaptateur et changer ce que vous voulez à partir de là? –

+0

Je ne suis pas sûr de ce que vous entendez par «copier». Je vais devoir faire un peu plus de recherches je pense! – paulH

2

Tout ce que vous devez faire est de définir Gridlines à "Aucun"

se réfèrent: GridLines propriété du GridView.

<asp:GridView GridLines="None" /> 

Bien sûr, si vous voulez plus de contrôle sur le rendu, les adaptateurs de contrôle sont ce que vous cherchez.

+0

J'utilise déjà Gridlines = "None", et le contrôle est toujours rendu avec border = "0".Êtes-vous en train de dire que l'attribut border n'est pas rendu pour vous? Si oui, je serais intéressé de savoir pourquoi. Peut-être que le gridview est rendu différemment avec une nouvelle version de .net? J'utilise actuellement .net 3.5 – paulH

Questions connexes