Repopulate Dropdown cuando la base de datos cambia en asp.net mvc

Mesa cliente tiene dos campos : Nombre completo y género

Digamos que tengo clientes desplegables. Los clientes están poblados por buscar datos de la tabla de clientes.

Ahora vamos a decir que tengo dos pestañas abiertas en el navegador 1)Usted puede realizar funciones CRUD en la tabla de clientes 2)Contiene la deserción de los clientes y algunos otros datos relevantes.

Realizar una operación cruzada en la pestaña1 debe actualizar automáticamente el desplegamiento en la segunda pestaña sin una página de actualización.

¿Cómo puedo lograr esto en asp.net mvc o asp.net ?

¿Como es posible atar mi desplegable a un cambio de mesa en asp.net?

Pregunta hecha hace 3 años, 4 meses, 28 días - Por compilerhero1251


3 Respuestas:

  • Necesitas hacer uso de Web Sockets. Este protocolo mantiene una conexión TCP abierta entre el servidor y el cliente y los cambios en la tabla de clientes se pueden enviar al cliente.

    La buena noticia es que Microsoft proporciona una implementación del protocolo Web Socket llamado SignalR y eso simplifica mucho las cosas.

    Respondida el Dec 17, 2020 a las 19:19 - por binarybard1cc8

    Votos positivos: 0 | Votos negativos: 0

  • Para lograr que el desplegable de clientes se actualice automáticamente cuando se realiza una operación CRUD en la tabla de clientes sin necesidad de una actualización de página, puedes utilizar técnicas como SignalR o WebSockets en tu aplicación ASP.NET MVC.

    A continuación, se presenta un ejemplo de cómo realizar esto utilizando SignalR:

    • Agrega la librería SignalR a tu proyecto ASP.NET MVC:
    
    Install-Package Microsoft.AspNet.SignalR
    

    • Crea un Hub de SignalR para manejar las actualizaciones en tiempo real. Por ejemplo, un ClienteHub:
    csharp
    using Microsoft.AspNet.SignalR;

    public class ClienteHub : Hub { public void ActualizarClientes() { Clients.All.actualizarClientes(); } }

    • En tus acciones del controlador donde se realicen las operaciones CRUD en la tabla de clientes, llama al método del Hub para notificar a los clientes conectados que se ha realizado un cambio:
    csharp
    public class ClienteController : Controller
    {
        private IHubContext _hubContext;

    public ClienteController()
    

    { _hubContext = GlobalHost.ConnectionManager.GetHubContext(); }

    public ActionResult CrearCliente() { // Lógica para crear un nuevo cliente

    _hubContext.Clients.All.actualizarClientes();

    return RedirectToAction("Index"); }

    // Resto de acciones CRUD }

    • En tu vista donde se muestra el desplegable de clientes, agrega el script para conectarse al Hub de SignalR y actualizar el desplegable cuando se notifique un cambio:
    html

    Con estos pasos, cada vez que se realice una operación CRUD en la tabla de clientes, se notificará a todos los clientes conectados a través de SignalR para que actualicen su desplegable de clientes sin necesidad de una recarga de página.

    Espero que esta respuesta te sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 18, 2020 a las 19:20 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • ASP.NET MVC

    Para actualizar dinámicamente un desplegable cuando la base de datos cambia en ASP.NET MVC, puedes utilizar una combinación de SignalR y AJAX.

    Pasos:

    • Instala SignalR: Instala el paquete NuGet `Microsoft.AspNetCore.SignalR`.
    • Crea un Hub de SignalR: Crea una clase que herede de `Hub` y se encargue de enviar las notificaciones de actualización al cliente.
    csharp
    public class ClientHub : Hub
    {
        public void SendUpdate()
        {
            Clients.All.SendAsync("ReceiveUpdate");
        }
    }
    
    • Registra el Hub en Startup.cs: Registra el Hub en el método `ConfigureServices` de `Startup.cs`.
    csharp
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR();
    }
    
    • Agrega el script de SignalR a la vista: En la vista que contiene el desplegable, agrega el siguiente script para conectarse al Hub:
    html
    
    
    
    • Actualiza la base de datos y notifica al Hub: En el controlador que realiza las operaciones CRUD, agrega código para notificar al Hub sobre los cambios en la base de datos.
    csharp
    public ActionResult UpdateClient(Client client)
    {
        // Actualiza la base de datos aquí
    
        // Notifica al Hub
        var hubContext = GlobalHost.ConnectionManager.GetHubContext();
        hubContext.Clients.All.SendAsync("ReceiveUpdate");
    
        return RedirectToAction("Index");
    }
    
    • Actualiza el desplegable en el evento de recepción "ReceiveUpdate": En la función `ReceiveUpdate` del script de SignalR, vuelve a cargar los datos del desplegable desde el servidor.

    ASP.NET

    En ASP.NET Web Forms, puedes utilizar un UpdatePanel para actualizar dinámicamente el desplegable.

    Pasos:

    • Agrega un UpdatePanel: Agrega un `UpdatePanel` a la página que contiene el desplegable.
    html
    
        
            
        
    
    
    • Crea un disparador: Crea un disparador que actualice el `UpdatePanel` cuando la base de datos cambie. Esto se puede hacer mediante un evento como `SqlDataSourceCommand` o un controlador de eventos personalizado.
    • Actualiza el panel en el disparador: En el disparador, actualiza el panel llamando al método `Update()`.
    csharp
    protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
    {
        UpdatePanel1.Update();
    }
    
    1. Recarga los datos del desplegable: Dentro del UpdatePanel, vuelve a cargar los datos del desplegable desde el servidor.

    Respondida el Dec 18, 2020 a las 19:31 - por Gemini

    Votos positivos: 0 | Votos negativos: 0