2010-08-25 13 views
0

Je tente d'afficher les réponses dans une enquête spécifique, exactement comme la personne interrogée a consulté l'enquête initiale. Cependant, lors de la visualisation, je ne veux pas que le navigateur autorise le changement des options sélectionnées dans un RadioButtonList. Y at-il un moyen de rendre un RadioButtonList en lecture seule, sans utiliser radioButtonList1.Enabled = false?RadioButtonList en lecture seule dans ASP.NET 2005

J'ai essayé de sous-classer RadioButtonList et d'y ajouter un attribut Fixed qui permet seulement de changer la valeur sélectionnée chaque fois que Fixed = false, mais cela n'empêche pas l'utilisateur de changer les valeurs; il ne fait que revenir à la valeur d'origine si RadioButtonList a AutoPostBack = true, et je souhaite éviter d'utiliser des publications du tout. J'ai envisagé d'utiliser les graphiques pour un bouton radio sélectionné/non sélectionné et de le coder comme du code HTML pur, de la chaîne et du fil de balle, mais j'espère qu'il y aura un meilleur moyen. Des idées?

Répondre

1

Si vous désactivez les éléments du bouton radio, ils seront grisés et le formulaire ne sera plus identique à l'original.

En remplacement de 'disable', vous pouvez avoir javascript restaurer la valeur si l'utilisateur essaie de le changer. Le gestionnaire de clic jQuery gère à la fois le clavier et la souris sélection:

<script type="text/javascript" src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script> 
    <script type="text/javascript"> 
     $(function(){ 
      //save list of checked radio buttons 
      var checked = $('table input:radio:checked'); 

      $("table input:radio").click(function() { 
       //go through list and re-check initial checks 
       $.each(checked, function() { 
        this.checked=true; 
       }); 
      }); 

     }); 

    </script> 
    <asp:RadioButtonList runat="server" ID="rbl" > 
     <asp:ListItem Text="Item1" /> 
     <asp:ListItem Text="Item2" Selected="True" /> 
     <asp:ListItem Text="Item3" />    
    </asp:RadioButtonList> 
+0

Cela résout le cas pour un seul RBL avec un ID spécifique. Cela peut-il être généralisé pour faire la même chose pour tous les RBL sur la page? – taserian

+0

Bien sûr. Vous voudrez peut-être ajouter une classe à votre RBL afin que vous puissiez faire un sélecteur plus sécurisé. J'ai mis à jour la réponse. Je sauvegarde tous les identifiants initiaux sélectionnés, puis les resélectionne tous quand un bouton radio est cliqué. (J'étais paresseux) – foson

0

Il suffit d'utiliser le code comme ci-dessous

<script type="text/javascript"> 
    $(function(){ 
     $("#rbl input:radio").attr("disabled", "true"); 

    }); 

</script> 
<asp:RadioButtonList runat="server" ID="rbl" > 
    <asp:ListItem Text="Item1" /> 
    <asp:ListItem Text="Item2" Selected="True" /> 
    <asp:ListItem Text="Item3" />    
</asp:RadioButtonList> 
+0

Désactiver un bouton radio grise. Je ne veux pas que les boutons radio soient grisés, je veux qu'ils restent tels qu'ils sont, mais en lecture seule. – taserian