none
Consulta Sql en SqlDataSource Dinamica RRS feed

Respuestas

Todas las respuestas

  • Si te estás planteando cambiar la consulta en tiempo de ejecución, probablemente significa que no deberías estar usando un SqlDataSource.

    Si lo que necesitas es solamente añadir condiciones en el Where de la consulta, entonces sí, se puede hacer cambiando los filtros del SqlDataSource. Pero si quieres cambiar la consulta por completo, por ejemplo, seleccionando campos distintos de una tabla distinta, entonces el SqlDataSource es una mala elección porque normalmente la razón de usarlo es para aplicar databinding, pero el databinding se hace en tiempo de diseño con los campos de la consulta inicial, por lo que al cambiarla en tiempo de ejecución se "rompen" todos los vínculos. Así que si necesitas esta funcionalidad, es mejor que uses un SqlConnection con un SqlDataAdapter en el code-behind, en lugar de un SqlDataSource en el .aspx, y que apliques el databinding programáticamente en lugar de hacerlo desde el diseñador.

    domingo, 21 de agosto de 2016 7:45
  • Hola Alberto

    Estoy deAcuerdo con lo que comentas...

    Mi SqlDataSource esta enlazado a un control repeater y solo lo que deseo es la condicion como tu dices en el WHERE ...pero no c como hacerlo.???


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    domingo, 21 de agosto de 2016 14:14
  • Ah, si solo quieres filtrar los datos, una opción sencilla es cambiar el valor del FilterExpression. Incluso, el FilterExpression puede estar parametrizado, y el parámetro puedes tomarlo directamente de otro control que haya en la pantalla. Tienes un ejemplo aquí:

    https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.filterexpression(v=vs.110).aspx

    O bien, si quieres filtrar directamente con el Where, deja el Where escrito en la sentencia SQL y ponle parámetros. Y después los parámetros los configuras con el <SelectParameter> dentro del SqlDataSource. Ejemplo aquí:

    https://msdn.microsoft.com/en-us/library/z72eefad.aspx

     
    domingo, 21 de agosto de 2016 17:14