Frage

Auf einer unserer Seiten haben wir einen Tisch bekamen, die Zeilen generiert zur Laufzeit hat. Ich möchte den Inhalt dieser Zeilen in eigene Steuerung und legen Sie die Eigenschaften auf zur Laufzeit bewegen, um die Präsentation von der Code-behind zu trennen. Aber es funktioniert nicht so, wie ich bin erwartet.

Wenn ich meine Reihe artige Kontrolle vererben Usercontrol habe, dann kann ich dies tun, um die Steuerung zur Laufzeit zu erstellen:

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

Dann wollte ich meine Tabelle hinzuzufügen:

MyTable.Rows.Add(row);

Aber Zeile erbt nicht von System.Web.UI.HtmlControls.HtmlTableRow oder System.Web.UI.WebControls.TableRow, so dass Sie das nicht tun. Allerdings, wenn ich meine Kontrolle machen erben von einer von denen zwei, dann über die Loadcontrol Anruf beschwert sich, dass die Steuerung nicht von Usercontrol nicht erben.

Was ist die glückliche Lösung hier? Wenn Sie weitere Informationen benötigen, wenden Sie sich bitte.

War es hilfreich?

Lösung

Ich denke, was Sie suchen zu tun, ist dies:

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

Das Problem, wie Sie festgestellt ist, dass Ihre Steuerung nicht von mehreren Basisklassen erben können und Sie können Ihre Steuerung direkt an die Zeilen Sammlung hinzuzufügen. Sie müssen sich zuerst wickeln. Es kann saubere Lösungen, aber diese funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top