c# - disabled - fieldset width
Crear programáticamente fieldset, ol/ul y etiquetas li en ASP.Net, C# (2)
Necesito escribir un formulario ASP.Net que producirá el siguiente HTML:
<fieldset>
<legend>Contact Details</legend>
<ol>
<li>
<label for="name">Name:</label>
<input id="name" name="name" class="text" type="text" />
</li>
<li>
<label for="email">Email address:</label>
<input id="email" name="email" class="text" type="text" />
</li>
<li>
<label for="phone">Telephone:</label>
<input id="phone" name="phone" class="text" type="text" />
</li>
</ol>
</fieldset>
Sin embargo, los campos que se agregarán al formulario se determinarán en tiempo de ejecución, así que necesito crear el fieldset en tiempo de ejecución y agregarle una lista ordenada y elementos de lista, con etiquetas, cuadros de texto, casillas de verificación, etc., según corresponda.
No puedo encontrar objetos estándar ASP.Net que crearán estas etiquetas.
Por ejemplo, me gustaría hacer algo como lo siguiente en C #:
FieldSet myFieldSet = new FieldSet();
myFieldSet.Legend = “Contact Details”;
OrderedList myOrderedList = new OrderedList();
ListItem listItem1 = new ListItem();
ListItem listItem2 = new ListItem();
ListItem listItem3 = new ListItem();
// code here which would add labels and textboxes to the ListItems
myOrderedList.Controls.Add(listItem1);
myOrderedList.Controls.Add(listItem2);
myOrderedList.Controls.Add(listItem3);
myFieldSet.Controls.Add(myOrderedList);
Form1.Controls.Add(myFieldSet);
¿Hay algún objeto ASP.Net estándar que pueda producir esto, o hay alguna otra forma de lograr el mismo resultado?
Mate
Puedes intentar esto:
Panel myFieldSet = new Panel();
myFieldSet.GroupingText= “Contact Details”;
HtmlGenericControl myOrderedList = new HtmlGenericControl("ol");
HtmlGenericControl listItem1 = new HtmlGenericControl ("li");
HtmlGenericControl listItem2 = new HtmlGenericControl ("li");
HtmlGenericControl listItem3 = new HtmlGenericControl ("li");
// code here which would add labels and textboxes to the ListItems
myOrderedList.Controls.Add(listItem1);
myOrderedList.Controls.Add(listItem2);
myOrderedList.Controls.Add(listItem3);
myFieldSet.Controls.Add(myOrderedList);
Form1.Controls.Add(myFieldSet);
Según la respuesta anterior, tuve una instancia en la que una matriz demostró ser útil, como se muestra aquí. Nota: Creé una lista desordenada en el código aspx con id = "ulNoTree".
int NumFloorsCt = 10;
LinkButton[] rgBL;
HtmlGenericControl[] rgLI;
/// <summary>
/// set up an array of LinkButtons with "li" controls
/// - each LinkButton click is handled by the same event handler
/// </summary>
void SetUpLinkButtons(List<FLOOR> listFloorRecs)
{
NumFloorsCt = 10;
rgBL = new LinkButton[NumFloorsCt];
rgLI = new HtmlGenericControl[NumFloorsCt];
for (int i = 0; i < NumFloorsCt; i++)
{
rgBL[i] = new LinkButton();
rgBL[i].ID = LB_ID_prefix + listFloorRecs[i].ID;
rgBL[i].Click += new System.EventHandler(LB_fp_Click);
rgBL[i].Text = listFloorRecs[i].DESCRIP;
rgBL[i].ToolTip = "Click here to display floor info";
rgLI[i] = new HtmlGenericControl("li");
rgLI[i].Controls.Add(rgBL[i]);
ulNoTree.Controls.Add(rgLI[i]);
}
}
/// <summary>
/// event handler for any of the link buttons
/// </summary>
protected void LB_fp_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)(sender);
// do your action here
}