none
Grid y filtro ASP.net MVC RRS feed

  • Pregunta

  • Buen dia,

    Necesito poder mostrar un grid en un sitio que estoy construyendo en asp.net mvc sin embargo necesito que este grid muestre la información que tenga similitudes con el texto ingresado en un input text, alguna vez hice esto en Vb y recuerdo que la consulta SQL era con un like pero en programación web no se como manejar eventos que me permitan mostrar el grid con el resultado de la búsqueda tras tipear cada letra en mi input text.

    alguna idea de como hacerlo sin utilizar plugins.

    gracias. 

    martes, 10 de mayo de 2016 21:06

Respuestas

  • alguna idea de como hacerlo sin utilizar plugins.

    ¿Alguna idea? Sí, con mucho trabajo. Esto que es simple en VB (en una aplicación de escritorio) se complica considerablemente en una aplicación web. El tema es que tú estás tecleando caracteres en un TextBox y quieres que "sobre la marcha" se filtre un grid. El problema es que eso ocurre en el lado cliente (dentro del navegador) y, a diferencia de lo que ocurre cuando eso mismo lo haces en una aplicación de escritorio, el navegador no tiene acceso al servidor SQL para enviarle la consulta con el "like". En consecuencia, es necesario que según tecleas caracteres, le envíes una petición http al servidor web para que éste a su vez ejecute el Like contra el servidor de base de datos, y envíe los datos de vuelta al navegador el cual los pintará en el grid.

    Hacer esto sin plugins implica que tienes que escribir en javascript un manejador de eventos que se dispare al teclear en el input, que construya una petición Ajax y la envíe al servidor. En el servidor escribes un método de acción que reciba esa llamada, construya una consulta SQL con el Like y la mande ejecutar a la base de datos, y luego devuelva los resultados típicamente como JSON, aunque también podrías devolver una Vista parcial que devuelva el grid ya montado en HTML. En el lado cliente, tendrás que escribir otro fragmento de javascript que reciba los resultados de la petición Ajax y los pinte sobre el grid.

    Todo esto desde luego es factible y lo puedes programar con un poco de esfuerzo, pero como ves es considerablemente más complejo que en una aplicación de escritorio.

    miércoles, 11 de mayo de 2016 5:52

Todas las respuestas

  • hola

    pero es bastante largo implementar lo que planteas, que es lo que has intentado

    - puedes capturar el valor del textbox del filtro en el action del controller ?

    - conoces algo sobre ado.net, o sea sabes ejecutar un SELECT?

    - como vas a representar la tabla? usaras el WebGrid

    [ASP.NET MVC] WebGrid Filtrado por DropDownList

    si bien en el articulo no se usa un textbox quizas aporte alguna idea de como armar el grid

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 11 de mayo de 2016 5:46
  • alguna idea de como hacerlo sin utilizar plugins.

    ¿Alguna idea? Sí, con mucho trabajo. Esto que es simple en VB (en una aplicación de escritorio) se complica considerablemente en una aplicación web. El tema es que tú estás tecleando caracteres en un TextBox y quieres que "sobre la marcha" se filtre un grid. El problema es que eso ocurre en el lado cliente (dentro del navegador) y, a diferencia de lo que ocurre cuando eso mismo lo haces en una aplicación de escritorio, el navegador no tiene acceso al servidor SQL para enviarle la consulta con el "like". En consecuencia, es necesario que según tecleas caracteres, le envíes una petición http al servidor web para que éste a su vez ejecute el Like contra el servidor de base de datos, y envíe los datos de vuelta al navegador el cual los pintará en el grid.

    Hacer esto sin plugins implica que tienes que escribir en javascript un manejador de eventos que se dispare al teclear en el input, que construya una petición Ajax y la envíe al servidor. En el servidor escribes un método de acción que reciba esa llamada, construya una consulta SQL con el Like y la mande ejecutar a la base de datos, y luego devuelva los resultados típicamente como JSON, aunque también podrías devolver una Vista parcial que devuelva el grid ya montado en HTML. En el lado cliente, tendrás que escribir otro fragmento de javascript que reciba los resultados de la petición Ajax y los pinte sobre el grid.

    Todo esto desde luego es factible y lo puedes programar con un poco de esfuerzo, pero como ves es considerablemente más complejo que en una aplicación de escritorio.

    miércoles, 11 de mayo de 2016 5:52