none
Filtrar datos con Jquery RRS feed

  • Pregunta

  • Hola.

    Estoy recién comenzando a usar Jquery y empecé tratando de filtrar datos de un gridview a través de textbox. El código que uso es el siguiente y que se encuentra fácilmente googleando:

    $(document).ready(function () {
            var txtFiltro = '#' + '<%=txtBuscar.ClientID %>';
            var grilla = '#' + '<%=gvPAPI.ClientID %>';
            $(txtFiltro).quicksearch(grilla + ' tbody tr');
        });

    Todo funciona bien sobe un solo gridview. El problema es que estoy trabajando con un TabContainer de AJAX con 3 TabPanel en total, y cada uno de ellos contiene un GridView distinto. Mientras no cambie de TabPanel el script se sigue ejecutando sin ningún problema, pero al cambir de TabPanel este deja de funcionar sobre el gridview al cual corresponde.

    Mis consultas son dos.

    ¿Como puedo ejecutar 3 script diferentes(uno para cada gridview)? Por ahora solo probé replicando el código del script pero cambiando los textbox y gridview a los cuales hace referencia.

    y ¿ de qué forma evito que el script deje de funcionar al momento de cambiar de TabPanel?

    martes, 22 de marzo de 2016 20:53

Respuestas

  • hola

    de casualidad el tabcontainer recarga el tab cuando cambias de uno a otro ? porque puede que esto produzca la perdida del attach del evento de jquery

    por lo general se resuelve con el .on() para adjuntar los eventos de forma dinamica, pero no estoy seguro si aplicara al quicksearch

    Si el on() no aplica vas a tener que detectar algun evento del TabContainer desde codigo cliente que permita adjuntar nuevamente el quicksearch al gridview

    $(document).ready(function () {
            AttachGrid1();
    		
    		$("tabcontainer").xxEvento(function(){ //deberias buscar que evento usar cuando cambia de tab
    			//aqui segun el tab que se ponga visible invocas al AttachGridN()
    		});
    });
    	
    	
    function AttachGrid1(){
    	var txtFiltro = '#' + '<%=txtBuscar.ClientID %>';
    	var grilla = '#' + '<%=gvPAPI.ClientID %>';
    	$(txtFiltro).quicksearch(grilla + ' tbody tr');
    }
    
    function AttachGrid2(){
    	var txtFiltro = '#' + '<%=txtBuscar2.ClientID %>';
    	var grilla = '#' + '<%=gvPAPI2.ClientID %>';
    	$(txtFiltro).quicksearch(grilla + ' tbody tr');
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Karla_1988 miércoles, 23 de marzo de 2016 13:28
    martes, 22 de marzo de 2016 21:33

Todas las respuestas

  • hola

    de casualidad el tabcontainer recarga el tab cuando cambias de uno a otro ? porque puede que esto produzca la perdida del attach del evento de jquery

    por lo general se resuelve con el .on() para adjuntar los eventos de forma dinamica, pero no estoy seguro si aplicara al quicksearch

    Si el on() no aplica vas a tener que detectar algun evento del TabContainer desde codigo cliente que permita adjuntar nuevamente el quicksearch al gridview

    $(document).ready(function () {
            AttachGrid1();
    		
    		$("tabcontainer").xxEvento(function(){ //deberias buscar que evento usar cuando cambia de tab
    			//aqui segun el tab que se ponga visible invocas al AttachGridN()
    		});
    });
    	
    	
    function AttachGrid1(){
    	var txtFiltro = '#' + '<%=txtBuscar.ClientID %>';
    	var grilla = '#' + '<%=gvPAPI.ClientID %>';
    	$(txtFiltro).quicksearch(grilla + ' tbody tr');
    }
    
    function AttachGrid2(){
    	var txtFiltro = '#' + '<%=txtBuscar2.ClientID %>';
    	var grilla = '#' + '<%=gvPAPI2.ClientID %>';
    	$(txtFiltro).quicksearch(grilla + ' tbody tr');
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Karla_1988 miércoles, 23 de marzo de 2016 13:28
    martes, 22 de marzo de 2016 21:33
  • Perfecto. Me funcionó Leandro.

    En el tabContainer tenía en true el AutoPostback, lo que hacía que se perdiera el script. Sólo lo dejé en false.

    Muchas gracias

    miércoles, 23 de marzo de 2016 13:27