Tengo un GridView
con algunos BoundFields
y dos TemplateFields
. En estos dos TemplateFields
, creo dinámicamente UserControls
que contiene un DropDownList
y un TextBox
, que los usuarios pueden modificar.columnas dinámicas desaparecen después de la devolución de datos
Cuando intento obtener los valores de los controles después de PostBack
, los valores en BoundFields
siguen allí, pero mis controles dinámicos desaparecen. Puedo crearlos de nuevo pero no obtendrá los valores del usuario ... ¿Cómo puedo obtener estos valores antes de que se pierdan?
He aquí algunos de mi código:
En el caso RowDataBound
:
Select Case type
Case "BooleanBis"
e.Row.Cells(2).Controls.Clear()
Dim list1 As BooleanBisList = New BooleanBisList(avant, False)
e.Row.Cells(2).Controls.Add(list1)
e.Row.Cells(4).Controls.Clear()
Dim list2 As BooleanBisList = New BooleanBisList(apres, True)
e.Row.Cells(4).Controls.Add(list2)
Case "Boolean"
e.Row.Cells(2).Controls.Clear()
Dim list3 As BooleanList = New BooleanList(avant, False)
e.Row.Cells(2).Controls.Add(list3)
e.Row.Cells(4).Controls.Clear()
Dim list4 As BooleanList = New BooleanList(apres, True)
e.Row.Cells(4).Controls.Add(list4)
End Select
En mi botón de evento de clic, que intenta conseguir el control de usuario:
Case "String"
temp.ChampValeurApres = DirectCast(Tableau1.Rows(i).Cells(selectedColumn).Controls(1), TextBox).Text
pero me sale el error de que no existe.
¡Muchas gracias! todavía tengo un problema, tengo una columna con controles de solo lectura. y el valor de estos controles no se recupera después de la devolución de datos. alguna idea ? – user874854
@ user874854: los controles 'readonly' no mantienen los cambios en el lado del cliente en ViewState (solo cambios en el lado del servidor). Conviértelos 'readonly' en [Atributos] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.attributes.aspx) -collection, por ejemplo:' TextBox1.Attributes .Add ("readonly", "readonly"); '. De esta manera engañas a ASP.NET. Mira [aquí] (http://www.codeproject.com/KB/aspnet/Readonly.aspx) para más información. –