Desesperado. Databind lento al rellenar DropDownList
Publicado por Spidy (3 intervenciones) el 19/06/2012 13:19:56
Hola
Os cuento mi problema:
Estoy desarrollando una aplicación .NET con VS2005. La aplicación es básicamente un formulario con varios campos y DropDownList que se rellenan desde una base de datos de Oracle y que luego pueden seleccionarse para enviar las opciones elegidas. Algunos objetos tienen la propiedad Autopostback=true porque necesito que hagan ciertas cosas cuando los abandono o cambio su contenido.
Bien, los DropDownList se cargan con un código similar a este:
If Page.IsPostBack = False Then
ccSQLaux = "SELECT ...."
Try
ccDaAux = New OleDbDataAdapter(ccSQLaux, ccCnn)
ccDtAux = New DataTable
ccDaAux.Fill(ccDtAux)
With DD_Mdir
.DataSource = ccDtAux
.DataTextField = "dir"
.DataValueField = "cod_dir"
.DataBind()
End With
Catch ex As Exception
' Gestión de errores
End Try
end if
Todo funciona correctamente y en el equipo de desarrollo, cuando lo ejecuto en el servidor web local de VS2005 la velocidad de la aplicación es notable. Muy ágil. Pero en cambio, cuando lo publico en el servidor web de la empresa (Windows 2003 Web Edition con hardware más que sobrado) el relleno de los DropDownList enlentece sobremanera la aplicaiónn e incluso cualquier evento que se desencadena parece como si volviera a cargar los datos, cuando no es así ya que las selecciones realizadas en los DropDown se mantienen y además he depurado el código y solo se cargan en la primera llamada a la aplicación.
Si comento la línea .DataBind() de cada bloque With-End With la aplicación vuelve a ser rápida. Es decir, el problema está en el relleno de los DropDownList.
¿Alguna forma de rellenarlos más rápidamente?
¿A qué es debido esa diferencia de rendimiento entre el servidor Local y el de producción, cuando debería ser justo lo contrario?
Gracias por vuestra ayuda porque estoy un poco bloqueado con este tema y me están poniendo las orejas coloradas en el trabajo.
Un saludo
Os cuento mi problema:
Estoy desarrollando una aplicación .NET con VS2005. La aplicación es básicamente un formulario con varios campos y DropDownList que se rellenan desde una base de datos de Oracle y que luego pueden seleccionarse para enviar las opciones elegidas. Algunos objetos tienen la propiedad Autopostback=true porque necesito que hagan ciertas cosas cuando los abandono o cambio su contenido.
Bien, los DropDownList se cargan con un código similar a este:
If Page.IsPostBack = False Then
ccSQLaux = "SELECT ...."
Try
ccDaAux = New OleDbDataAdapter(ccSQLaux, ccCnn)
ccDtAux = New DataTable
ccDaAux.Fill(ccDtAux)
With DD_Mdir
.DataSource = ccDtAux
.DataTextField = "dir"
.DataValueField = "cod_dir"
.DataBind()
End With
Catch ex As Exception
' Gestión de errores
End Try
end if
Todo funciona correctamente y en el equipo de desarrollo, cuando lo ejecuto en el servidor web local de VS2005 la velocidad de la aplicación es notable. Muy ágil. Pero en cambio, cuando lo publico en el servidor web de la empresa (Windows 2003 Web Edition con hardware más que sobrado) el relleno de los DropDownList enlentece sobremanera la aplicaiónn e incluso cualquier evento que se desencadena parece como si volviera a cargar los datos, cuando no es así ya que las selecciones realizadas en los DropDown se mantienen y además he depurado el código y solo se cargan en la primera llamada a la aplicación.
Si comento la línea .DataBind() de cada bloque With-End With la aplicación vuelve a ser rápida. Es decir, el problema está en el relleno de los DropDownList.
¿Alguna forma de rellenarlos más rápidamente?
¿A qué es debido esa diferencia de rendimiento entre el servidor Local y el de producción, cuando debería ser justo lo contrario?
Gracias por vuestra ayuda porque estoy un poco bloqueado con este tema y me están poniendo las orejas coloradas en el trabajo.
Un saludo
Valora esta pregunta


0