Question

J'ai un petit formulaire Web avec 2 boutons radio, appelez-les PickFromList et EnterValue. Lorsque la case à cocher PickFromList est cochée, je veux afficher un GridView que j'ai configuré pour se lier à un ObjectDataSource. Lorsque EnterValue est coché, je veux que GridView disparaisse.

Ce formulaire est présenté à l'aide d'une table et vous souhaitez afficher / masquer les lignes appropriées en fonction des données appropriées et des entrées de l'utilisateur.

Malheureusement, le GridView ne se lie pas lorsque la ligne trPickFromList2 spécifie l'ID et le runat = & "serveur &"; les attributs. Si je supprime id et runat = & Quot; serveur & Quot; à partir de la ligne trPickFromList2, il se lie avec succès.

Des idées?

<table id="tblOptions" runat="server">
    <tr id="trPickFromList1" runat="server">
        <td>
            <asp:RadioButton ID="rbFromList" runat="server" GroupName="Selection" 
                Text="Get Data From Existing Item" AutoPostBack="True" 
                oncheckedchanged="rbromList_CheckedChanged" />
        </td>
    </tr>
    <tr id="trPickFromList2" runat="server">
        <td style="padding-left:20px">
            <asp:GridView ID="gvList" runat="server" AutoGenerateColumns="False" 
                DataSourceID="odsList" Width="400px" onrowdatabound="gvList_RowDataBound">
                <Columns>
                    ...
                </Columns>
            </asp:GridView>
        </td>
    </tr>
    <tr id="trEnterValue1" runat="server">
        <td>
            <asp:RadioButton ID="rbEnterValue" runat="server" GroupName="Selection" 
                            Text="Create a New Item"
                            AutoPostBack="True" 
                            oncheckedchanged="rbEntered_CheckedChanged" />
        ...
Était-ce utile?

La solution

Pourquoi ne pas simplement afficher / masquer les TR avec javascript? De cette façon, vous n'aurez pas ce problème et vous aurez une interface utilisateur beaucoup plus réactive.

Avec jQuery:

$ ('. classOnShowRadioButton'). click (function () {     $ ('. trToShow'). show ();     $ ('. trToHide'). hide (); });

alors évidemment faire l'inverse pour l'autre bouton radio.

Autres conseils

J'ai fini par implémenter le contrôle de RowSelectorField de Wilco Bauwer pour résoudre ce problème. Ce n'est pas une solution parfaite dans la mesure où le contrôle affiche la valeur d'index de la ligne sélectionnée plutôt que la ou les valeurs de clé de données sélectionnées; cependant, cela a bien fonctionné.

hmm .. je ne suis pas tout à fait sûr, mais quelques fois, la valeur AutoWireEvents est définie sur false, elle se trouve en haut de la <% page /% > section. désolé si ce n’est pas une aide, mais quelque chose d’ennuyeux et d’insignifiant comme cela est probablement le problème.

Si la réponse AutoWireEvents proposée par Joe n’est pas le problème, vous pouvez également essayer de supprimer le serveur runat = des balises tr, au lieu de les envelopper avec des espaces réservés et de les utiliser pour contrôler la visibilité. (Notez, n'utilisez pas de panneaux, cela entraînerait un code HTML invalide)

I remarque le même comportement avec un FormView dans une balise TR avec runat = & "serveur &";

Une raison particulière pour laquelle vous utilisez un tableau pour la mise en page? Essayez de supprimer toutes vos commandes de la table et de faire en sorte que les boutons radio rendent la GridView visible / invisible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top