//Creación de controles en tiempo de ejecución basado en una tabla de sql server
//Creamos un array de controles
Public TextBox[] LabelArrayIdProd, LabelArrayProd, TBArrayInvTot
TextBox labelIdProd, labelProd, TBInvTot
//Varible para generar n cantidad de controles
static int CantidadRegistros = 0;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
CrearControles();
this.NumberOfControls = 1;
}
}
protected int NumberOfControls
{
get { return (int)ViewState["NumControls"]; }
set { ViewState["NumControls"] = value; }
}
protected override void CreateChildControls()
{
// Aqui estamos recreando los controles para que se mantengan en cada post back
if (this.NumberOfControls == 1) {
CrearControles();
}
else
{
return;
}
}
//Creamos los controles
protected void CrearControles()
{
//************************************************************
string GenerarProductos;
GenerarProductos = "SELECT idconsecutivo, producto FROM ConnProductos2 "
+ "ORDER BY idconsecutivo";
DataTable dt;
OleDbDataAdapter da;
da = new OleDbDataAdapter(GenerarProductos, MiConeccion);
dt = new DataTable();
da.Fill(dt);
CantidadRegistros = Convert.ToInt16(dt.Rows.Count);
//********************************************************
LabelArrayIdProd = new TextBox[CantidadRegistros];
LabelArrayProd = new TextBox[CantidadRegistros];
TBArrayInvTot = new TextBox[CantidadRegistros];
for (int i = 0; i < CantidadRegistros; i++)
{
labelIdProd = new TextBox();
labelIdProd.ID = "LabelID" + i;
LabelArrayIdProd[i] = labelIdProd;
this.Panel1.Controls.Add(labelIdProd);
//Dar un formato por medio de una hoja de estilo
LabelArrayIdProd[i].CssClass = "ClaseEtiquetasId";
//Le asignamos un valor a la etiqueta desde la tabla de nuestra base
LabelArrayIdProd[i].Text = dt.Rows[i]["idconsecutivo"].ToString();
LabelArrayIdProd[i].Enabled = false;
this.Panel1.Controls.Add(new LiteralControl("
"));
//***************************************************************
labelProd = new TextBox();
this.labelProd.ID = "LabelProd" + i;
LabelArrayProd[i] = labelProd;
this.Panel2.Controls.Add(this.labelProd);
LabelArrayProd[i].CssClass = "ClaseEtiquetasProd";
LabelArrayProd[i].Text = dt.Rows[i]["Producto"].ToString();
LabelArrayProd[i].Enabled = false;
this.Panel2.Controls.Add(new LiteralControl("
"));
//****************************************
TBInvTot = new TextBox();
this.TBInvTot.ID = "tbInvTot" + i;
TBArrayInvTot[i] = TBInvTot;
this.Panel4.Controls.Add(this.TBInvTot);
TBArrayInvTot[i].CssClass = "ClaseTB";
TBArrayInvTot[i].Text = "0";
this.Panel4.Controls.Add(new LiteralControl("
"));
//**********************************************
}
}
//Guardar los datos
protected void LinkButtonGuardarReg_Click(object sender, EventArgs e)
{
InsertarCapura();
this.NumberOfControls = 0;
//
}
protected void InsertarCapura()
{
for (int i = 0; i < CantidadRegistros; i++)
{
string InsertarDesglose = "INSERT INTO Desglose "
+ "(id_producto, invtot) "
+ "VALUES (" + Convert.ToInt16(this.LabelArrayIdProd[i].Text) + ", "
+ " + Convert.ToInt16(this.TBArrayInvTot[i].Text)) ";
OleDbConnection MiConexion = new OleDbConnection(MiConeccion);
OleDbCommand MiInsert = new OleDbCommand(InsertarDesglose, MiConexion);
MiInsert.Connection.Open();
MiInsert.ExecuteNonQuery();
MiInsert.Connection.Close();
}
}
//Este es un código modificado del que uso en mis páginas,
//así que puede que no sea del todo correcto, espero sus comentarios
Suscribirse a:
Enviar comentarios (Atom)
funciona esto..?? espero q funcione tengo una tarea
ResponderEliminaryo tengo el siguiente codigo:
ResponderEliminarButton botton1 = new Button();
botton1.Click += new System.EventHandler(Edita_Click);
botton1.Text = "EDITAR";
botton1.CssClass = "btn";
botton1.ID = nombrebtn;
trw.Cells[2].Controls.Add(botton1);
crea el boton pero no funciona el metodo Edita_Click pues este no se jecuta