IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[3.5] Surcharge du rendu d'un RadioButtonList


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut [3.5] Surcharge du rendu d'un RadioButtonList
    Salut,

    N'étant pas convaincu par le rendu des RadioButtonList et CheckBoxList en mode flow et surtout layout j'aimerais créer un contrôle personnalisé pour chacun d'eux.
    En fait, j'aimerais intégrer les boutons radio dans une liste non ordonnée (<ul>).
    Le rendu proposé étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input id="Case1" type="checkbox" name="Case" />
    <label for="Case1">Case 1</label>
    J'aimerais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul>
        <li>
            <input id="Case1" type="checkbox" name="Case" />
            <label for="Case1">Case 1</label>
        </li>
        ....
    </ul>
    Or je n'arrive pas à retourner les checkbox dans la méthode Render! Voici une tentative simple et infructueuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Public Class RadioButtonList
            Inherits System.Web.UI.WebControls.RadioButtonList
     
            Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
                writer.RenderBeginTag(HtmlTextWriterTag.Ul)
                For Each item As ListItem In Me.Items
                    writer.RenderBeginTag(HtmlTextWriterTag.Li)
                    writer.Write(item)
                    writer.RenderEndTag()
                Next
                writer.RenderEndTag()
                'MyBase.Render(writer)
            End Sub
        End Class
    J'ai beau chercher, lire la documentation msdn, quelque chose me manque!
    Pour une page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="radioButtonList.aspx.vb" Inherits="ControleSurcharge_radioButtonList" %>
    <%@ Register Assembly="Bibliotheque" Namespace="Bibliotheque.Controls" TagPrefix="im" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Page sans titre</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
          <im:RadioButtonList ID="test" runat="server">
             <asp:ListItem Value="0" Text="0"></asp:ListItem>
             <asp:ListItem Value="1" Text="1"></asp:ListItem>
             <asp:ListItem Value="2" Text="2"></asp:ListItem>
          </im:RadioButtonList>
        </div>
        </form>
    </body>
    </html>
    J'ai en retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<title>Page sans titre</title>
    </head>
    <body>
        <form name="form1" method="post" action="radiobuttonlist.aspx" id="form1">
        <div>
        <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTYxODA3MDMyMQ9kFgICAw9kFgICAQ8QZGQWAGRkPuFMu4QtKDopHNzWNTnykQm8lQA=" />
        </div>
        <div>
          <ul>
            <li>0</li><li>1</li><li>2</li>
        </ul>
        </div>
        </form>
    </body>
    </html>
    Qui est le contenu des ListItem, mais donc visiblement pas des boutons radio.

    Saurez-vous m'aider?

    Merci par avance.

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Bon et bien, apparemment il faut tout reconstruire cf. http://www.nikhedonia.com/notebook/e...nordered-list/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        Public Class RadioButtonList
            Inherits System.Web.UI.WebControls.RadioButtonList
     
            Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
                Dim radio As String = "<input id={0}{1}{0} name={0}{2}{0} type={0}radio{0} value={0}{3}{0}{4} />"
                Controls.Clear()
     
                writer.RenderBeginTag(HtmlTextWriterTag.Ul)
                For i As Integer = 0 To Items.Count - 1
                    writer.RenderBeginTag(HtmlTextWriterTag.Li)
                    Dim sbRadio As StringBuilder = New StringBuilder
                    sbRadio.AppendFormat( _
                        radio, _
                        """", _
                        ClientID & "_" & i.ToString, _
                        ClientID & "$" & i.ToString, _
                        Items(i).Value, _
                        (IIf(Items(i).Selected, "checked", "")) _
                    )
                    writer.WriteLine(sbRadio.ToString())
                    writer.RenderEndTag()
                Next
                writer.RenderEndTag()
            End Sub
        End Class
    L'exemple cité plus haut m'a aidé à mieux comprendre ce qui était encore et toujours écrit, mais que je ne voulais pas comprendre. Il faut tout reconstruire. Soit avec HtmlTextWriter, soit avec du texte comme le code que je fournis.

    En espérant que ça serve.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec le rendu de sphère
    Par Francky033 dans le forum DirectX
    Réponses: 10
    Dernier message: 29/08/2003, 22h00
  2. Un objet rendu apparaît derrière un autre objet
    Par jamal24 dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2003, 20h47
  3. Réponses: 5
    Dernier message: 24/04/2003, 11h47
  4. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  5. Réponses: 8
    Dernier message: 20/11/2002, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo