Pregunta

En una de nuestras páginas, tenemos una tabla que tiene filas generadas en tiempo de ejecución. Quiero mover el contenido de esas filas a su propio control y establecer las propiedades en él en tiempo de ejecución, para separar la presentación del código subyacente. Pero no está funcionando de la manera que estoy esperando.

Si tengo mi control de tipo fila heredado de UserControl, entonces puedo hacer esto para crear el control en tiempo de ejecución:

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx");

Luego, quería agregar eso a mi tabla:

MyTable.Rows.Add(row);

Pero la fila no se hereda de System.Web.UI.HtmlControls.HtmlTableRow o System.Web.UI.WebControls.TableRow, así que no puedes hacer eso. Sin embargo, si hago que mi control se herede de uno de esos dos, entonces la llamada LoadControl anterior se queja de que el control no hereda de UserControl.

¿Cuál es la solución feliz aquí? Si se necesita información adicional, por favor pregunte.

¿Fue útil?

Solución

Creo que lo que estás buscando hacer es esto:

    MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx");
    TableCell newCell = new TableCell();
    newCell.Controls.Add(row);
    TableRow newRow = new TableRow();
    newRow.Cells.Add(newCell);
    MyTable.Rows.Add(newRow);

El problema, como usted dijo, es que su control no puede heredar de varias clases base y no puede agregar su control directamente a la colección Rows. Necesitas primero envolverlo. Puede haber soluciones más limpias, pero esta sí funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top