Wie füge ich ein Repeater-Steuerelement dynamisch aus dem Code dahinter hinzu?

Ich habe eine Methode, die Tabelle erstellt und anschließend einen Repeater erstellt. Die Tabelle wird gerendert, der Repeater wird jedoch nicht gerendert. Die folgende Methode erstellt einfach zuerst eine Tabelle, füllt sie mit Informationen und erstellt dann dynamisch einen Repeater, der einwandfrei funktioniert. Der Repeater wird dann jedoch nicht auf der ASPX-Seite gerendert. Ich habe versucht, den Stringbuilder als String zurückzugeben, aber es funktioniert immer noch nicht. Hier ist der Code unten. Vielen Dank

private void CreateUserExperienceTable(List<UserExperience> experiences)
    {
        foreach (UserExperience experience in experiences)
        {
            HtmlGenericControl Header = new HtmlGenericControl("h3");
            Header.InnerHtml = experience.Company;
            dvUserExperience.Controls.Add(Header);

            Table experienceTable = new Table();

            TableRow experienceRoleRow = new TableRow();
            TableRow experienceDescriptionRow = new TableRow();
            TableRow experiencePeriodFromRow = new TableRow();
            TableRow experiencePeriodToRow = new TableRow();

            TableCell experienceRoleTitleCell = new TableCell();
            TableCell experienceRoleValueCell = new TableCell();
            TableCell experienceDescriptionTitleCell = new TableCell();
            TableCell experienceDescriptionValueCell = new TableCell();
            TableCell experiencePeriodFromTitleCell = new TableCell();
            TableCell experiencePeriodFromValueCell = new TableCell();
            TableCell experiencePeriodToTitleCell = new TableCell();
            TableCell experiencePeriodToValueCell = new TableCell();

            experienceRoleTitleCell.Text = "Role:";
            experienceRoleValueCell.Text = experience.Role;
            experienceDescriptionTitleCell.Text = "Description:";
            experienceDescriptionValueCell.Text = experience.CompanyDescription;
            experiencePeriodFromTitleCell.Text = "Period From: ";
            experiencePeriodFromValueCell.Text = experience.PeriodFrom.ToString("yy-mm-dd");
            experiencePeriodToTitleCell.Text = "Period To:";
            experiencePeriodToValueCell.Text = experience.PeriodTo == null
                ? "Present"
                : experience.PeriodTo.ToString();

            experienceRoleRow.Cells.Add(experienceRoleTitleCell);
            experienceRoleRow.Cells.Add(experienceRoleValueCell);
            experienceDescriptionRow.Cells.Add(experienceDescriptionTitleCell);
            experienceDescriptionRow.Cells.Add(experienceDescriptionValueCell);
            experiencePeriodFromRow.Cells.Add(experiencePeriodFromTitleCell);
            experiencePeriodFromRow.Cells.Add(experiencePeriodFromValueCell);
            experiencePeriodToRow.Cells.Add(experiencePeriodToTitleCell);
            experiencePeriodToRow.Cells.Add(experiencePeriodToValueCell);

            experienceTable.Rows.Add(experienceRoleRow);
            experienceTable.Rows.Add(experienceDescriptionRow);
            experienceTable.Rows.Add(experiencePeriodFromRow);
            experienceTable.Rows.Add(experiencePeriodToRow);

            dvUserExperience.Controls.Add(experienceTable);

            String rptDuties = updatePageWithDuties(experience.Duties);
            //dvUserExperience.Controls.Add(rptDuties);
        }
    }

    private string updatePageWithDuties(List<ExperienceDuties> list)
    {
        Repeater rptDuties = new Repeater();
        rptDuties.DataSource = list;
        rptDuties.DataBind();

        foreach (RepeaterItem rptItem in rptDuties.Items)
        {
            if (rptItem.ItemIndex == 0)
            {
                RepeaterItem headerTemplate = new RepeaterItem(rptItem.ItemIndex, ListItemType.Header);
                HtmlGenericControl h4Tag = new HtmlGenericControl("h4");
                h4Tag.InnerHtml = "Duties";
                headerTemplate.Controls.Add(h4Tag);
            }

            RepeaterItem itemTemplate = new RepeaterItem(rptItem.ItemIndex, ListItemType.Item);
            Label dutyLabel = new Label();
            ExperienceDuties expDuties = ((IList<ExperienceDuties>)rptDuties.DataSource)[rptItem.ItemIndex];
            dutyLabel.Text = expDuties.Description;
            itemTemplate.Controls.Add(dutyLabel);

            RepeaterItem seperatorItem = new RepeaterItem(rptItem.ItemIndex, ListItemType.Separator);
            LiteralControl ltrHR = new LiteralControl();
            ltrHR.Text = "<hr />";
            seperatorItem.Controls.Add(ltrHR);
        }

        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter writer = new HtmlTextWriter(sw);

        rptDuties.RenderControl(writer);
        return sb.ToString();
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage