Principales respuestas
Ayuda con botones dinámicos ASP:NET C#

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.
Respuestas
-
hola
es que no deberias programar renderizando controles del lado del servidor, sino que deberias usar codigo cliente con javascript o jquery
quizas hacer una llamada ajax al servidor y crear los botones con jquery, cuando lo pulsas envias una invocacion a un webmethod
o sea asp.net para el render de esto que quieres hacer no es performante
Full-featured Seating Chart Plugin With jQuery - Seat Charts
http://jsfiddle.net/g4kzo4fo/2/
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta greg_dorian miércoles, 19 de diciembre de 2018 14:34
- Marcado como respuesta Pedro AlfaroModerator miércoles, 16 de enero de 2019 20:01