Domanda

Ho un piccolo modulo web con 2 pulsanti di opzione, chiamali PickFromList e EnterValue. Quando PickFromList è selezionato, voglio mostrare un GridView che ho configurato per associare a ObjectDataSource. Quando EnterValue è selezionato, desidero che GridView scompaia.

Questo modulo è strutturato utilizzando una tabella e desidera nascondere / mostrare le righe appropriate in base ai dati appropriati e all'input dell'utente.

Sfortunatamente GridView non si lega quando la riga trPickFromList2 specifica l'id e runat = " server " attributi. Se rimuovo id e runat = & Quot; server & Quot; dalla riga trPickFromList2 si lega correttamente.

Qualche idea?

<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" />
        ...
È stato utile?

Soluzione

Perché non mostri / nascondi i TR con javascript? In questo modo non avrai questo problema e avrai un'interfaccia utente molto più reattiva.

Con jQuery:

$ ( 'classOnShowRadioButton'). Cliccare (function () {     $ ( 'TrToShow') show ().;     $ ( 'TrToHide.') Nascondere ().; });

quindi ovviamente fai il contrario per l'altro pulsante di opzione.

Altri suggerimenti

Ho finito per implementare RowSelectorField control di Wilco Bauwer per risolvere questo problema. Non è una soluzione perfetta in quanto il controllo presenta il valore dell'indice della riga selezionata anziché il / i valore / i chiave / e chiave / e dati selezionata; tuttavia, ha funzionato bene.

hmm .. non sono del tutto sicuro, ma qualcosa che mi ha colpito un paio di volte è che AutoWireEvents è impostato su false, è in alto nella <% page /% > sezione. scusate se non è d'aiuto, ma qualcosa di fastidioso e insignificante è probabilmente il problema.

Se AutoWireEvents risponde che Joe ha suggerito che il problema non è il problema, puoi anche provare a rimuovere runat = server dai tag tr, e invece avvolgerli con segnaposto e utilizzare i segnaposto per controllare la visibilità. (Nota, non utilizzare i pannelli, in quanto comporterà HTML non valido)

I notato lo stesso comportamento con un FormView all'interno di un tag TR con runat = " server "

Qualche motivo particolare che stai usando una tabella per il layout? Prova a togliere tutti i controlli dal tavolo e rendi i pulsanti di opzione solo per rendere visibile / invisibile l'attuale GridView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top