Domanda

Su una delle nostre pagine, abbiamo una tabella con righe generate in fase di esecuzione. Voglio spostare il contenuto di quelle righe nel loro controllo e impostarne le proprietà in fase di esecuzione, al fine di separare la presentazione dal code-behind. Ma non funziona come mi aspetto.

Se ho il mio controllo simile a una riga ereditato da UserControl, allora posso farlo per creare il controllo in fase di esecuzione:

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

Quindi, volevo aggiungerlo al mio tavolo:

MyTable.Rows.Add(row);

Ma row non eredita da System.Web.UI.HtmlControls.HtmlTableRow o System.Web.UI.WebControls.TableRow, quindi non puoi farlo. Tuttavia, se eredito il mio controllo da uno di questi due, la chiamata LoadControl sopra si lamenta che il controllo non eredita da UserControl.

Qual è la felice soluzione qui? Se sono necessarie ulteriori informazioni, si prega di chiedere.

È stato utile?

Soluzione

Penso che quello che stai cercando di fare sia questo:

    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);

Il problema, come affermato, è che il controllo non può ereditare da più classi base e non è possibile aggiungere il controllo direttamente alla raccolta Rows. Devi prima avvolgerlo. Potrebbero esserci soluzioni più pulite, ma questa funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top