none
accion boton editar en un atabla de mi view

    Pregunta

  • tengo una tabla en mi vista que contiene un boton editar, lo que quiero es que al pulsarlo los datos de esa fila se carguen en las dropdownlist, no se como efectuar esa accion.

    ¿Seria posible realizarla sin tener que crear otra vista nueva?

    miércoles, 13 de junio de 2018 11:52

Respuestas

  • Ok, entonces parece que la vista tiene los controles para la edición.  Necesita entonces JavaScript.  Cada botón de edición necesita tener a mando los ID's de cada DDL para la fila a la que corresponden.  Yo probablemente agregaría un atributo data-id a cada celda de la tabla.  Entonces cuando el botón se presiona, ubica su propia fila y luego enumera las celdas.  Luego de cada celda relevante a un DDL lee su atributo data-id.  Entonces es cuestión de habilitar cada DD y asignarle el valor del ID.

    Si usara Angular o AngularJS sería más sencillo, pero bueno.  Con jQuery, algo así:

    $(function()
    {
        $('selector de los botones').click(function() {
            var boton = $(this);
            var fila = boton.parents('tr');
            var celdasConId = $('td[data-id]', fila);
            //O las celdas contienen otro atributo con el ID del DDL al que aplican
            //o se sabe por el orden.
            celdasConId.each(function(index) {
                var celda = $(this);
                var id = celda.data('id');
                var ddlId = celda.data('ddl');
                var ddl = $('#' + ddlId);
                ddl.prop('disabled', false);
                ddl.val(id);
            });
        });
    });

    No lo probé.  Imagino que funciona.  Eso requiere que cada fila de la tabla luzca algo así:

    <tr>
        <td><!-- celda de borrar --></td>
        <td><!-- celda de editar --></td>
        <td data-id="ide correspondiente al valor de unidad" data-ddl="elIdDelDDdeUnidad"> bla bla </td>
        <td data-id="id correspondiente al valor de área" data-ddl="elIdDelDDdeArea"> bla bla </td>
        <td data-id="id correspondiente al valor de servicio" data-ddl="elIdDelDDdeServicio"> bla bla <td>
        <td> bla bla </td>
    </tr>


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT


    • Editado webJose jueves, 14 de junio de 2018 6:42
    • Marcado como respuesta pit29 jueves, 14 de junio de 2018 7:01
    jueves, 14 de junio de 2018 6:42

Todas las respuestas

  • En MVC, el botón de Editar haría un GET a una acción del controlador que sabe cuál objeto es el que desea editar, tal vez por ID.  Con ese ID el método de acción delegaría a una vista el trabajo de crear una página HTML que sea editora:  Es decir, con casillas de texto y DDL's como los que menciona.  Esa es la forma estándar de trabajar con MVC.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    miércoles, 13 de junio de 2018 19:06
  • ahora mismo tengo creada esta vista, lo que quiero es que al pulsar  el boton del lapiz editar los dropdownlist Grupo, Unidad, Area y servicio, adquieran el valor de la fila seleccionada.

     mi codigo en la vista es este:

    @ModelType CHJ.InventarioAplicacionesMVC.APP_Aplicacion
    
    @Code
        ViewData("Title") = "EditRl"
        Layout = "~/Views/Shared/_Layout.vbhtml"
    End Code
    
    <h2>Editar Roles de Grupo</h2>
    
    
    @Using Html.BeginForm("EditRl", "InventarioApli", Nothing, FormMethod.Post, New With {.enctype = "multipart/form-data"})
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(True)
    
        @<fieldset>
           
            <br />
            <br />
    
    
    
            <div class="tabla">
                <div class="columna5">
    
                    <div class="editor-label">
                        @Html.Label("Grupo")
                    </div>
                    <div class="editor-field">
                        @*<select id="Gr" disabled="disabled" name="Grupo" type="drw" style="width:100px;height:16px"/>*@
                        @Html.DropDownList("GRS_Nombre", New SelectList(ViewBag.GruposSeg, "GRS_IdGrupoSeguridad", "GRS_Nombre", "RLS_GrupoSeguridad"), "Seleccione Grupo", New With {.id = "GRS_Nombre"}) @*New With {.htmlAttributes = New With {.disabled = "true"}})*@
    
                    </div>
    
                </div>
    
                <div class="columna3">
    
                    <div class="editor-label">
                        @Html.Label("Unidad")
                    </div>
                    <div class="editor-field">
                        @*<select id="Gr" disabled="disabled" name="Grupo" type="drw" style="width:100px;height:16px"/>*@
                        @Html.DropDownList("UNI_Nombre", New SelectList(ViewBag.UnidadR, "CodigoUnidad", "Nombre", "Nombre"), "Seleccione Unidad", New With {.id = "GRS_NombreUnidad"}) @*New With {.htmlAttributes = New With {.disabled = "true"}})*@
    
                    </div>
    
                </div>
    
                <div class="columna3">
    
                    <div class="editor-label">
                        @Html.Label("Area")
                    </div>
                    <div class="editor-field">
                        @*<select id="Gr" disabled="disabled" name="Grupo" type="drw" style="width:100px;height:16px"/>*@
                        @Html.DropDownList("AREA_Nombre", New SelectList(ViewBag.Area, "CodigoArea", "Nombre", "Nombre"), "Seleccione Area", New With {.id = "GRS_NombreArea"}) @*New With {.htmlAttributes = New With {.disabled = "true"}})*@
    
                    </div>
    
                </div>
                <div class="columna3">
    
                    <div class="editor-label">
                        @Html.Label("Servicio")
                    </div>
                    <div class="editor-field">
                        @*<select id="Gr" disabled="disabled" name="Grupo" type="drw" style="width:100px;height:16px"/>*@
                        @Html.DropDownList("SER_Nombre", New SelectList(ViewBag.Servicio, "CodigoServicio", "Nombre", "Nombre"), "Seleccione Servicio", New With {.id = "GRS_NombreServicio"}) @*New With {.htmlAttributes = New With {.disabled = "true"}})*@
    
                    </div>
    
                </div>
    
    
    
    
            </div>
    
    
    
            <h3>Grupo Seguridad</h3>
    
    
    
    
            <Table Class="table" id=tabla>
                <tr>
                    <th></th>
                    <th></th>
    
    
                    <th>
                        @Html.ActionLink("Unidad", "GS", "RLS_CodigoUnidad")
                    </th>
                    <th>
                        @Html.ActionLink("Area", "GS", "RLS_CodigoArea")
                    </th>
    
                    <th>
                        @Html.ActionLink("Servicio", "GS", "RLS_CodigoServicio")
                    </th>
    
                    <th>
                        @Html.ActionLink("Grupo Seguridad", "GS", "RLS_GrupoSeguridad")
                    </th>
    
    
    
    
                </tr>
                @For Each item As RLS_RolesSeguridad In ViewBag.tabla
    
                    @<tr>
    
                        <td>@Html.ActionLink("DeleteRL", "DeleteRL", New With {.idApp = Model.APP_IdAplicacion, .idGrs = item.RLS_GrupoSeguridad}, New With {.title = "Borrar", .class = "boton_borrar"})</td>
    
                        <td>@Html.ActionLink("EditRl", "EditRl", New With {.Id_RLS = item.Id_RLS, .id = item.APP_IdAplicacion, .idGrs = item.RLS_GrupoSeguridad}, New With {.title = "Editar", .class = "boton_editar"})</td>
                        <td>
                            @Html.Encode(item.RLS_CodigoUnidad)
                        </td>
    
    
                        <td>
                            @Html.Encode(item.RLS_CodigoArea)
    
                        </td>
    
                        <td>
                            @Html.Encode(item.RLS_CodigoServicio)
    
                        </td>
    
                        <td>
                            @Html.Encode(item.GRS_GrupoSeguridad.GRS_Nombre)
    
                        </td>
    
    
    
    
                    </tr>
                Next
    
            </Table>
    
    
    
    
            <div Class="divBotonera">
                <input type="submit" id="Save" name="boton" value="Guardar" Class="boton" />
                <input type="submit" name="boton" value="Cancelar" Class="boton" />
                <input id="Exit" type="submit" name="boton" value="Salir" Class="boton" />
            </div>
    
    
       
    
    
    
        </fieldset>End Using

    no se como asignar el valor seleccionado a los dropdown

    • Editado pit29 jueves, 14 de junio de 2018 6:28
    jueves, 14 de junio de 2018 6:24
  • Ok, entonces parece que la vista tiene los controles para la edición.  Necesita entonces JavaScript.  Cada botón de edición necesita tener a mando los ID's de cada DDL para la fila a la que corresponden.  Yo probablemente agregaría un atributo data-id a cada celda de la tabla.  Entonces cuando el botón se presiona, ubica su propia fila y luego enumera las celdas.  Luego de cada celda relevante a un DDL lee su atributo data-id.  Entonces es cuestión de habilitar cada DD y asignarle el valor del ID.

    Si usara Angular o AngularJS sería más sencillo, pero bueno.  Con jQuery, algo así:

    $(function()
    {
        $('selector de los botones').click(function() {
            var boton = $(this);
            var fila = boton.parents('tr');
            var celdasConId = $('td[data-id]', fila);
            //O las celdas contienen otro atributo con el ID del DDL al que aplican
            //o se sabe por el orden.
            celdasConId.each(function(index) {
                var celda = $(this);
                var id = celda.data('id');
                var ddlId = celda.data('ddl');
                var ddl = $('#' + ddlId);
                ddl.prop('disabled', false);
                ddl.val(id);
            });
        });
    });

    No lo probé.  Imagino que funciona.  Eso requiere que cada fila de la tabla luzca algo así:

    <tr>
        <td><!-- celda de borrar --></td>
        <td><!-- celda de editar --></td>
        <td data-id="ide correspondiente al valor de unidad" data-ddl="elIdDelDDdeUnidad"> bla bla </td>
        <td data-id="id correspondiente al valor de área" data-ddl="elIdDelDDdeArea"> bla bla </td>
        <td data-id="id correspondiente al valor de servicio" data-ddl="elIdDelDDdeServicio"> bla bla <td>
        <td> bla bla </td>
    </tr>


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT


    • Editado webJose jueves, 14 de junio de 2018 6:42
    • Marcado como respuesta pit29 jueves, 14 de junio de 2018 7:01
    jueves, 14 de junio de 2018 6:42
  • Si tiene una nueva pregunta, cree un nuevo hilo en el foro pues es la política del foro mantener una única pregunta por hilo de conversación.

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 14 de junio de 2018 9:26
  • ok

    jueves, 14 de junio de 2018 11:32