Удалить строку в таблице, используя ajax в asp. net mvc без обратной передачи в jquery с датой - PullRequest
0 голосов
/ 29 марта 2020

Я хочу удалить строку в моей таблице без обратной передачи. Я использую jquery datatables. У меня есть значок мусора, где я хочу попросить пользователя подтвердить удаление. В некоторых сценариях ios удаление невозможно, поэтому после подтверждения пользователем я хочу показать сообщение о том, что удаление невозможно или что оно прошло успешно.

Вот визуальное представление моей таблицы. My table

Вот мой код с данными.

    <script>
        $(document).ready(function () {
            $('#proveedorTable').DataTable({
                "ajax": {
                    "url": "/fichaproveedor/loaddata",
                    "type": "GET",
                    "datatype": "json"
                },
                "columns": [
                    { "data": "proveedor_id", "autoWidth": true },   /* index = 0 */
                    { "data": "nombre", "autoWidth": true },      /* index = 1 */
                    { "data": "direccion", "autoWidth": true },  /* index = 2 */
                    { "data": "codigo_postal", "autoWidth": true },  /* index = 3 */
                    { "data": "cuidad", "autoWidth": true },  /* index = 4 */
                    { "data": "pais", "autoWidth": true },  /* index = 5 */
                    { "data": "pagina_internet", "autoWidth": true },  /* index = 6 */
                    {
                        "data": "proveedor_id", "width": "50px", "render": function (data) {
                            return '<a class="btn" href="/fichaproveedor/AnadirEditar/' + data + '"><i class="material-icons" title="Detalles">edit</i></a>';   /* index = 7 */
                        }
                    },
                    {
                        "data": "proveedor_id", "width": "50px", "render": function (data) {
                            return '<a class="popup" href="/fichaproveedor/Eliminar/' + data + '"><i class="material-icons" title="Eliminar">delete</i></a>';   /* index = 8 */
                        }
                    },
                    { "defaultContent": "", "autoWidth": true }, 
                ],
                'columnDefs': [{
                    'targets': [7,8,9], /* column index */
                    'orderable': false, /* true or false */
                }]
            })
</script>

Вот мой asp. net mvc код.

    [HttpPost]
    public ActionResult Eliminar(int id)
    {
        proveedorContext proveedorContext = new proveedorContext();

        var proveedorFound = proveedorContext.GetAllProveedor().Where(a => a.proveedor_id == id).FirstOrDefault();
        var proveedorsData = proveedorContext.GetAllProveedor();
        if (proveedorFound != null)
        {
            proveedorContext.deleteProveedorFromDB(proveedorFound);
            return Json(new { succes = true }, JsonRequestBehavior.AllowGet);
        }
        return Json( new { succes = false }, JsonRequestBehavior.AllowGet);
    }

    [HttpPost]
    [ActionName("Eliminar")]
    public ActionResult EliminarFromDB(int id)
    {
        proveedorContext proveedorContext = new proveedorContext();

        var proveedorFound = proveedorContext.GetAllProveedor().Where(a => a.proveedor_id == id).FirstOrDefault();
        var proveedorsData = proveedorContext.GetAllProveedor();
        if (proveedorFound != null)
        {

            proveedorContext.deleteProveedorFromDB(proveedorFound);
            return Json( new { succes = true }, JsonRequestBehavior.AllowGet );
        }
        return new JsonResult { Data = new { succes = false } };
    }

1 Ответ

1 голос
/ 30 марта 2020

1.Измените свою кнопку удаления, как -

{
  "data": "proveedor_id", "width": "50px", "render": function (data) {
 return "<a href='#' class='popup' onclick=Delete('" + data + "'); title='Eliminar'><i class='material-icons'></i>delete</a>";
}


OR

{
  "width": "50px", "render": function (data, type, row) {
 return "<a href='#' class='popup' onclick=Delete('" + row.proveedor_id + "'); title='Eliminar'><i class='material-icons'></i>delete</a>";
}

2.Создайте функцию удаления, как -

    function Delete(id) {
        var url ="/fichaproveedor/Eliminar/";
        $.post(url, { id: id }, function (data) {
            if (data) {
                oTable = $('#proveedorTable').DataTable();
                oTable.draw();
            }
            else {
                alert("Something Went Wrong!");
            }
        });
    }

    //If you need confirm box use this
    function DeleteData(id) {
      var box = confirm("Are you sure you want to delete ...?");
      if (box == true) {
         Delete(id);
      } else {
        //Do somthing
      }
    }

Это работа для меня. Надеюсь, это работает для вас.

...