[Programación C#]Duda tabla-dialog

xtreme12

Hola, estoy desarrollando una aplicación y me ha surgido un problema, utilizo la tabla x-editable de bootstrap https://vitalets.github.io/x-editable/. La tabla se rellena con dos foreach y quiero que en cada fila tenga un botón de eliminar, y al pulsar en el botón de borrar se abra un dialog.
El problema que tengo es el siguiente, al tocar se me abren tantos dialogs como datos tenga el foreach y siempre me pilla el ultimo valor del foreach.

¿Alquien sabe como puedo solucionarlo?

Trabajo en ASP.NET con Razor.

Gracias por la ayuda de antemano.

r2d2rigo

Pues si no pones el codigo no podemos saber que has hecho mal...

2 respuestas
xtreme12

#2 Se que he hecho mal, estoy metiendo el boton y el dialog en el for. Y los datos los estoy recuperando del propio for, por ello siempre me pilla el ultimo y se me abre tantas veces el dialogo como interacciones tenga el foreach.

Eso lo acabo de descubrir ahora,pero mi duda ahora es como puedo hacer en asp.net lo que quiero,una tabla que se completa con un for y que tenga una columna con un boton que abra un dialog y se le pase los datos de esa columna.

PiPePiTo

Le pasas la lista con el contenido de la tabla desde el controlador a la vista, hasta ahí bien.

pues ahora, en esa lista, cuando estás pintando la tabla, tienes que tener un id del objeto que quieres abrir en el nuevo pop up, pues cuando estés pintando el forEach puedes meter un botón que llame a una función en plan abrirDialog(id) y conforme vas pintando cada linea con el botón, metes el id ahí a pelo, luego en esa función ya pones para cargar esos datos específicos y que te abra el modal.

Creo que también podrías poner en algún data atribute el objeto y pasearlo de algún lado a otro, pero eso ya es cosa tuya, yo cargaría en la tabla los datos justos y luego al abrir el dialog llamaría para pedir los que me faltan.

1 respuesta
xtreme12

#4 #2 Pongo un ejemplo más o menos de lo que hago, yo utilizo dos for para rellenar la tabla:

<table id="tabla" class="display">
            <thead>
            <tr>
                <th>Nombre</th>
                <th>Apellidos</th>
                <th>Numero</th>
                <th>Calle</th>
                <th>Acciones</th>
            </tr>
            </thead>
            @if (item.Usuarios != null)
            {
                <tbody>
                @foreach (var item2 in item.Usuarios)
                {
                    
<tr> <td>@item2.Nombre</td> <td>@item2.Apellidos</td> <td>@item2.Numero</td> <td>@item2.Calle</td> <td><a data-toggle="modal" data-pk="@item.Id" data-target=".bootstrapmodalBorrarUsuario"><span class="fa fa-trash fa-lg padding-right" title="Eliminar"></span></a>

En la columna acciones tengo al tocar abrirá un modal, hasta ahí todo funciona, el modal que utilizo son de este tipo:

<div class="modal fade bootstrapmodalBorrarUsuario" >
						
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4>Eliminar usuario</h4>
                <button data-dismiss="modal" class="close"><span>&times;</span></button>
            </div>
            <div class="modal-body">
                <div class="form-horizontal3">
                    <span class="fa fa-exclamation-triangle fa-lg " style="padding-right: 10px" title="Eliminar">¿Está seguro de eliminar este usuario?</span>
                </div>
            </div>
            <div class="modal-footer">
                <button class="btn btn-primary" type="submit">Aceptar</button>
                <button class="btn btn-default" data-dismiss="modal">Cancelar</button>
            </div>

        </div>
    </div>
</div>

Y al dar a guardar o lo que sea,es cuando interactuo con el controllador,por ello lo que necesito es saber como puedo enviar información en el boton de eliminar de dentro de la tabla a mi modal para poder eliminar el usuario,poder ver los detalles o diferentes acciones,ya que como lo hago ahora tengo el modal dentro del for,por ello item2.Nombre es evidente que lo tiene ,pero no es el de la fila que selecciono.

Edit:esto es un ejemplo de lo que hago,no es el real.

1 respuesta
PiPePiTo

#5 Creo que en este caso Stackoverflow te puede ayudar...

https://stackoverflow.com/questions/38529973/razor-mvc-get-confirm-message-before-delete

Más o menos la solución ahí propuesta te debería ayudar, aparentemente yo te he mandado por un camino no del todo bien x'D

Ahí el tipo abre el modal usando una clase y pilla el id y lo manda al controller al hacer el submit del modal, échale un ojo.

1 respuesta
xtreme12

#6 Estoy leyendo y parece ser que si me soluciona mi problema, muchísimas gracias

Usuarios habituales

  • xtreme12
  • PiPePiTo
  • r2d2rigo