Busca lo que quieras

Funciones prácticas en jquery para uso de Tablas

Lamento no organizar esto un poco.....

Lo que puedo decir es que todo esto hace lo siguiente:
- Agrega una fila nueva a una tabla en la parte final.
- Elimina la fila a la cual haga clic en la x.
- Modifica el orden de los registros de la tabla.

Y aquí esta el código:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <style type="text/css">
    .areiniciar, .areiniciar:link, .areiniciar:visited
    {
   text-decoration: none;
   cursor:pointer;
   font-weight: bold;
    }
    .areiniciar:hover, .areiniciar:focus
    {
   text-decoration: underline;
   cursor:pointer;
   font-weight: bold;
    } 
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:HiddenField runat="server" ID="hfvalores" />
        <table id="tblpso">
        <tr>
            <td colspan="3">
                <a class="fila_aagregar" href="#" >+ Agregar Fila</a> 
            </td>
        </tr>
        <tr>
            <td>
            orden
            </td>
            <td>
            valor
            </td>
            <td>
            change ord
            </td>
        </tr>
        
        
        </table>
    </div>
    <script type="text/javascript" language="javascript">
        //Eventos, se debe dejar con el
        //Eventos, se debe dejar con el
        $(document).on('click', '.fila_aagregar', function() {
        //$(".fila_aagregar").on('click', function () {
            agregarFila('','');//si es nueva la fila, el valor de la caja de texto es vacio
        });

        $(document).on('click', '.fila_aeliminar', function() {
        //$(".fila_aeliminar").on('click', function () {
            eliminarFila($(this));
        });

        $(document).on('click', '.fila_asubir', function() {
        //$(".fila_asubir").on('click', function () {
            var idfila = $(this).parent().parent().find('.spanid').html();
            cambiarOrden('subir', idfila);
        });

        $(document).on('click', '.fila_abajar', function() {
        //$(".fila_abajar").on('click', function () {
            var idfila = $(this).parent().parent().find('.spanid').html();
            cambiarOrden('bajar', idfila);
        });


        //Funciones 
        function cambiarOrden(subirobajar, identificadorfila) {

            var auxidentificador;
            if (subirobajar == 'subir') {
                auxidentificador = Number(identificadorfila) + 1;
            }
            else {
                identificadorfila = Number(identificadorfila) + 2;
                auxidentificador = Number(identificadorfila) - 1;
            }

            //obtener valores para ser cruzados entre filas
            var nombresuperior = $('#tblpso tr').eq(identificadorfila).find('.tdvalor .inombreobjeto').val();
            var idsuperior = $('#tblpso tr').eq(identificadorfila).find('.tdvalor .hfidobjeto').val();

            var nombreactual = $('#tblpso tr').eq(auxidentificador).find('.tdvalor .inombreobjeto').val();
            var idactual = $('#tblpso tr').eq(auxidentificador).find('.tdvalor .hfidobjeto').val();

            //fila superior
            $('#tblpso tr').eq(identificadorfila).find('.tdvalor .inombreobjeto').val(nombreactual);
            $('#tblpso tr').eq(identificadorfila).find('.tdvalor .hfidobjeto').val(idactual);

            //fila a subir
            $('#tblpso tr').eq(auxidentificador).find('.tdvalor .inombreobjeto').val(nombresuperior);
            $('#tblpso tr').eq(auxidentificador).find('.tdvalor .hfidobjeto').val(idsuperior);

        }
     
        function agregarFila(newid, newnombre) {

            var numeroFilasActuales = obtenerFilasActuales();

            var FilaPersonaSocioDemograficoOtro = '<tr>            <td class="tdorden">            <span class="spanid">$idfila$</span>            </td>            <td class="tdvalor">            <input type="hidden" class="hfidobjeto" value="$idobjeto$" /><input type="text" name="valor" value="$nombre$" class="inombreobjeto" />            </td>            <td class="tdaccion">            <a class="fila_asubir areiniciar" href="#" >▲</a>             <a class="fila_abajar areiniciar" href="#" onclick="">▼</a>            <a class="fila_aeliminar areiniciar" href="#" onclick="">X</a>            </td>        </tr>';
            FilaPersonaSocioDemograficoOtro = FilaPersonaSocioDemograficoOtro.replace("$idfila$", numeroFilasActuales + 1);
            FilaPersonaSocioDemograficoOtro = FilaPersonaSocioDemograficoOtro.replace("$idobjeto$", newid); 
            FilaPersonaSocioDemograficoOtro = FilaPersonaSocioDemograficoOtro.replace("$nombre$", newnombre);

            

            $('#tblpso tbody>tr:last').after(FilaPersonaSocioDemograficoOtro);

            ocultarBotonesSubirBajarPrimeraYUltimaFila();
        }

        function eliminarFila(objectlink) {
            
            //si solo queda una fila no se permite eliminar la fila, se deja valor en 0
            if (1 == obtenerFilasActuales()) {
                $('#tblpso .tdvalor .inombreobjeto').val('');
            }
            else {
                objectlink.closest("tr").remove();
                reordenarFilas();
            }
            ocultarBotonesSubirBajarPrimeraYUltimaFila();
        }

        function obtenerValorDeSelectorSegunIdFila() {
            //
        }

        function reordenarFilas() {
            var auxIndiceFilas = 0;
            $('#tblpso tr').each(function () {
                if ($(this).find('.spanid').length > 0) {
                    auxIndiceFilas++;
                    $(this).find('.spanid').html(auxIndiceFilas);
                }
            })
        }
        function obtenerFilasActuales() {
            return $('#tblpso').find('.spanid').length;
        }
        function ocultarBotonesSubirBajarPrimeraYUltimaFila() {
            var auxIndiceFilas = 0;
            $('#tblpso tr').each(function () {
                if ($(this).find('.spanid').length > 0) {

                    auxIndiceFilas++;

                    $(this).find('.fila_asubir').css('visibility', 'visible');
                    $(this).find('.fila_abajar').css('visibility', 'visible');

                    if (auxIndiceFilas == 1) {//primera fila, deshabilitar subir
                        $(this).find('.fila_asubir').css('visibility', 'hidden');
                    }
                    if (auxIndiceFilas == obtenerFilasActuales()) {//ultima fila, deshabilitar bajar
                        $(this).find('.fila_abajar').css('visibility', 'hidden');
                    }
                    

                }
            })
        }
        //inicializar cuw
        function loadCUW(csvids, csvtextos) {
            //colocar ids en hiddenfield
            $('#hfvalores').val(csvids);

            //crear filas segun el numero de ids y asignar sus nombres
            var splitnombres = csvtextos.split('|');
            var splitids = csvids.split('|');

            for (indicenombre = 0; indicenombre < splitnombres.length; indicenombre++) {
                agregarFila(splitids[indicenombre], splitnombres[indicenombre]);
            }
        }

        var auxcsvids = '10|22|13|24|25|26';
        var auxcsvtexto = "Este un valor|Otro valor mas|Otro valor mas2|Otro valor mas3|Otro valor mas4|Otro valor mas5";

        loadCUW(auxcsvids, auxcsvtexto);
    </script>
    </form>
</body>
</html>


Ojo que ahora desde 1.9 de jquery ya no es live() sino on().

Sean felices! :) Y sientanse libres de opinar ;)

No hay comentarios:

Publicar un comentario

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)