La création d'un ASP.NET Répéteur de façon dynamique en C# Liée à un Objet de la Liste

J'ai un objet très simple:

public class DocumentType
{
    private int id;
    private string name;

    public int ID
    {
        get { return this.id; }
        set { this.id = value; }
    }

    public string Name
    {
        get { return this.name; }
        set { this.name = value; }
    }
}

J'ai une liste de DocumentType objets: List<DocumentType> documentTypes = getDocuments();

Je suis en train de travailler sur un contrôle personnalisé où je suis en train de créer dynamiquement un répéteur et lier dynamiquement à ma liste d'objet. Voici mon code:

private Repeater docList;
docList = new Repeater();
docList.DataSource = documentTypes;
docList.DataBind();

foreach (RepeaterItem repeatItem in docList.Items)
{
    //if condition to add HeaderTemplate Dynamically only Once
    if (repeatItem.ItemIndex == 0)
    {
        RepeaterItem headerItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Header);
        HtmlGenericControl hTag = new HtmlGenericControl("h4");
        hTag.InnerHtml = "Header";
        repeatItem.Controls.Add(hTag);
    }

    //Add ItemTemplate DataItems Dynamically

    RepeaterItem repeaterItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Item);
    Label lbl = new Label();

    //This part is completely broken!
    lbl.Text = string.Format("Content: {0} {1} <br />", (DocumentType)repeaterItem.DataItem).ID, repeaterItem.NamingContainer);
    repeatItem.Controls.Add(lbl);

    //Add SeparatorTemplate Dynamically
    repeaterItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Separator);
    LiteralControl ltrlHR = new LiteralControl();
    ltrlHR.Text = "<hr />";
    repeatItem.Controls.Add(ltrlHR);
}

L'en-tête et le séparateur de l'excellent travail. Je ne peux pas comprendre comment lier le modèle d'élément de l'élément courant de l'obtenir à l'écran. Je sais ce que j'ai en ce moment est complètement cassé, mais j'ai essayé plusieurs variantes avec pas de chance.

Merci d'avance pour toute aide ou des pointeurs dans la bonne direction!

OriginalL'auteur Dexter | 2011-04-22