Pregunta

Tengo un pequeño formulario web con 2 botones de opción, llámalos PickFromList y EnterValue. Cuando se selecciona PickFromList, quiero mostrar un GridView que he configurado para enlazar a un ObjectDataSource. Cuando se selecciona EnterValue, quiero que GridView desaparezca.

Este formulario se presenta utilizando una tabla y desea ocultar / mostrar las filas apropiadas en función de los datos apropiados y la entrada del usuario.

Desafortunadamente, el GridView no se une cuando la fila trPickFromList2 especifica el id y runat = " server " atributos. Si elimino id y runat = & Quot; servidor & Quot; desde la fila trPickFromList2 se une con éxito.

¿Alguna 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" />
        ...
¿Fue útil?

Solución

¿Por qué no solo muestra / oculta los TR con javascript? De esa forma no tendrá este problema y tendrá una interfaz de usuario mucho más receptiva.

Con jQuery:

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

entonces obviamente haga lo contrario para el otro botón de radio.

Otros consejos

Terminé implementando control RowSelectorField de Wilco Bauwer para resolver este problema. No es una solución perfecta porque el control muestra el valor de índice de la fila seleccionada en lugar de los valores de la clave de datos seleccionados; sin embargo, funcionó bien.

hmm ... no estoy seguro, pero algo que me ha sorprendido varias veces es que los AutoWireEvents estén configurados en falso, está en la parte superior en <% page /% > sección. lo siento si no es de ayuda, pero algo molesto e insignificante como ese es probablemente el problema.

Si la respuesta de AutoWireEvents que Joe sugirió no es el problema, también puede intentar eliminar el servidor runat = de las etiquetas tr y, en su lugar, envolverlos con marcadores de posición y usar los marcadores de posición para controlar la visibilidad. (Nota, no use paneles, ya que resultará en un HTML no válido)

I notó el mismo comportamiento con un FormView dentro de una etiqueta TR con runat = " server "

¿Alguna razón particular por la que está usando una tabla para el diseño? Intente quitar todos los controles de la tabla y haga que los botones de radio solo hagan que el GridView real sea visible / invisible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top