none
Ayuda con botones dinámicos ASP:NET C# RRS feed

  • Pregunta

  • Buen día con todos.

    Estoy desarrollando un sistema para venta de boletos de transporte terrestre. La imagen adjunta indica la ubicación de asientos del transporte. Este diseño se crear mediante parámetros de la base de datos, ya que hay otros buses que tienen más asientos o hasta 2 pisos. Los botones rojos indican que el asiento está ocupado, el verde disponible y el tomate asiento en proceso o seleccionado para vender el boleto. Como podría solucionar este problema:

    Lo que pasa es que se demora mucho en responder la aplicación cuando doy clic al botón verde para que cambie a tomate. También como podría hacer que si selecciono otro botón, libere al que esté en tomate y lo vuelva a verde, y el nuevo botón seleccionado cambie de color  verde a tomate?

    Aclaro que es una aplicación web y los botones se crean de forma dinámica en un panel.

    Para crear los botones se realizar solo dos consultas SQL:

    La primera consulta extrae el formato de los asientos para dibujar.

    La segunda consulta extrae la información de una tabla de detalle_pedido, consultando si el asiento ya está ocupado.

    Aclaro que es un resumen ya que se lo está integrando en un software contable.

    CODIGO DE CONSTRUCCION DE BOTONES

    pnlAsientos.Controls.Clear();
                    //AQUI LLENAMOS EL PANEL
                    for (int i = 0; i < 15; i++)
                    {
                        for (int j = 0; j < 5; j++)
                        {
                            //ImageButton boton = new ImageButton();
                            Button boton = new Button();


                            DataRow[] dFila = dtAsientos.Select("posicion_x = " + i + " and posicion_y = " + j);

                            if (dFila.Length != 0)
                            {
                                boton.ForeColor = Color.Black;
                                boton.Click += new EventHandler (boton_clic_asiento);
                                boton.Attributes.Add("Class", "btn bg-olive btn-default btn-sm");
                                boton.Width = 40;
                                boton.Height = 40;
                                boton.ID = "btnAsiento" + a.ToString();                            
                                boton.Text = dFila[0][1].ToString();
                                boton.CommandArgument = dFila[0][0].ToString();


                                DataRow[] dOcupado = dtOcupados.Select("id_ctt_asiento = " + Convert.ToInt32(dFila[0][0].ToString()));


                                if (dOcupado.Length != 0)
                                {
                                    boton.BackColor = Color.Red;
                                    boton.Attributes.Add("Class", "btn bg-maroon btn-default btn-sm");
                                    boton.ToolTip = "PASAJERO: " + Environment.NewLine + "NOMBRE: " + dOcupado[0][3].ToString().Trim().ToUpper() +
                                                    Environment.NewLine + "C.I. / RUC: " + dOcupado[0][2].ToString().Trim().ToUpper();
                                }

                                else
                                {
                                    boton.ToolTip = "ASIENTO DISPONIBLE";
                                }
                            }

                            else
                            {
                                boton.ForeColor = Color.Black;
                                boton.BackColor = Color.White;
                                boton.Width = 40;
                                boton.Height = 40;
                                boton.ID = "btnAsiento" + a.ToString();
                                boton.Text = " ";
                                boton.BorderStyle = BorderStyle.None;
                            }

                            pnlAsientos.Controls.Add(boton);
                            a++;
                        }
                        pnlAsientos.Controls.Add(new LiteralControl("<br />"));
                    }

    Gracias por la ayuda.

    martes, 18 de diciembre de 2018 16:52

Respuestas