SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => ASP .NET => Mensaje iniciado por: granjalf en Lunes 12 de Marzo de 2007, 16:25
-
Hola a todos:
Estoy construyendo una page dinámica para una empresa y necesito que se generen controles dinámicamente con la page. En este caso requiero que de acuerdo a una tabla de "Areas de la empresa" de la base de datos me genere dinámicamente tantos checkbox como campos en la tabla para que puedan elegir las areas y luego hacer una consulta con las areas seleccionadas.
Agradezco anticipadamente su pronta respuesta :)
Uso un dataset para manejar mis datos.
P.D:Pronto tambien necesitaré crear botones y textbox de igual manera, pls help
-
Para eso puedes usar el control CheckBoxList (http://es.gotdotnet.com/quickstart/aspplus/samples/webforms/ctrlref/webctrl/checkboxlist/doc_checklist.aspx).
Y debes usar las propiedades DataSource, DisplayMember DataTextField, y ValueMember DataValueField.
Saludos,
-
THANKS...pero no hay esas propiedades... solo encuentro DataSource DataTextField y DataValueField. creo que es lo mismo :P
-
así es, esos son :whistling: !
CheckBoxList (Miembros) (http://msdn2.microsoft.com/es-es/library/system.web.ui.webcontrols.checkboxlist_members(VS.80).aspx)
Saludos,
-
Deberás de seguir estos pasos:
1) Leer los datos y meterlos en un DataSet
2) Recorrerte este dataset
3) Por cada datarow realizar:
CheckBox cList = new CheckBox;
cList.Id = "número de fila del datarow";
4) Añadir este control a la página. Para añadirlo lo mejor será tener un control de servidor tipo panel y realizar lo siguient:
panel1.Controls.Add(cList);
Espero que te sirva de ayuda.
Javier Tirado
IT Consultor
Trentia Consulting
Desarrollo web (http://www.trentia.es)
-
Muchas gracias. Si resultaron todos, he optado por el siguiente:
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
Base.NORMA norma = new SGI_Intranet2.Base.NORMA();
cblNormas.DataSource = norma.GetNormas();
cblNormas.DataValueField = "ID_NORMA";
cblNormas.DataTextField = "NOM_NORMA";
cblNormas.DataBind();
Base.DOCUMENTO docint = new SGI_Intranet2.Base.DOCUMENTO();
cblDoc.DataSource = docint.GetDocInternos();
cblDoc.DataValueField = "ID_DOC";
cblDoc.DataTextField = "NOM_DOC";
cblDoc.DataBind();
}
}
Ahora se me presentó un problemota de nuevo. Tengo que crear drop down Lists dinámicamente de acuerdo a los elementos que elijo de mi CheckboxList y que se llenen con datos que saco de una Base de Datos.
He utilizado un Panel para crear dentro de este un Label y un DropDownList por cada item seleccionado en el checkboxlist; cuando utilizo el checkboxlist todo va bien, pero cuando hago clic en un checkbox para que me haga aparecer otro panel, mi panel que tiene los labels y dropdownlists se vacía. Aqui envío el código de llenado y el código del checkbox. En el Form_Load solo tengo el codigo arriba escrito. HELP PLS!!
//este metodo uso para controlar los checkbox elegidos de mi checkBoxList
private void cblNormas_SelectedIndexChanged(object sender, System.EventArgs e)
{
//con este if veo si hay algún checkbox en checked
if (cblNormas.SelectedIndex !=-1)
{
//este es el panel que lleno
pnlNormas.Visible = true;
string normas;
Label lb;
DropDownList dl;
int c = 0;
Base.REGLA regla = new SGI_Intranet2.Base.REGLA();
//este for corre todos los checkbox del cbl, y crea un label y un
//dropdownlist por cada item que esté checked (o selected)
for(int i=0;i<cblNormas.Items.Count;i++)
{
if (cblNormas.Items.Selected)
{
normas = "n.id_norma =" + cblNormas.Items.Value;
pnlNormas.Controls.Add(new Label());
lb = (Label)(pnlNormas.Controls[c]);
c++;
lb.Text = cblNormas.Items.Text + ": ";
lb.ID = "lb" + cblNormas.Items.Text;
lb.Width = 142;
lb.Font.Bold = true;
lb.BackColor = Color.FromArgb(195,216,235);
pnlNormas.Controls.Add(new DropDownList());
dl = (DropDownList)(pnlNormas.Controls[c]);
dl.ID = cblNormas.Items.Text;
dl.Width = 600;
c++;
dl.DataSource = regla.GetReglaVerdeNorma(normas);
dl.DataValueField = "ID_REGLA";
dl.DataTextField = "NOM_REGLA";
dl.DataBind();
}
}
}
else
pnlNormas.Visible = true;//era false
}
//este es el de checkbox, simplísimo
private void chkOtros_CheckedChanged(object sender, System.EventArgs e)
{
if (chkOtros.Checked)
pnlOtroReg.Visible = true;
else
pnlOtroReg.Visible = false;
}
Agradezo de Antemano su pronta respuesta :)