Comment créer des sauts de ligne entre des étiquettes générées dynamiquement dans un espace réservé?

StackOverflow https://stackoverflow.com/questions/830304

Question

Il s'agit du code ci-dessous dans le code derrière l'événement Page_Load du fichier:

        LinkButton linkButton = new LinkButton();
        linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i;
        linkButton.ForeColor = Color.Blue;
        linkButton.Font.Bold = true;
        linkButton.Font.Size = 14;
        linkButton.Font.Underline = false;
        linkButton.Text = itemList[i].ItemTitle.InnerText;
        linkButton.Click += new EventHandler(LinkButton_Click);
        linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText);
        PlaceHolder1.Controls.Add(linkButton); 
        Label label = new Label();
        label.ID = "LabelDynamicInPlaceHolder1Id" + i;
        label.ForeColor = Color.DarkGray;
        label.Text = itemList[i].ItemDescription.InnerText;
        PlaceHolder1.Controls.Add(label);

Je souhaite un saut de ligne entre chaque contrôle généré.

Était-ce utile?

La solution

La solution à votre problème de saut de ligne est ci-dessous. Toutefois, si vous le faites dans l'événement Page_Load, vos gestionnaires d'événements ne fonctionneront pas et vous rencontrerez des problèmes de cycle de vie des pages. Fondamentalement, pour que vos gestionnaires d'événements puissent se déclencher sur PostBack, vous devez créer ces contrôles dynamiques plus tôt dans le cycle de vie d'une page. Essayez de déplacer votre code vers la méthode OnInit si vous rencontrez ce problème.

    LinkButton linkButton = new LinkButton();
    linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i;
    linkButton.ForeColor = Color.Blue;
    linkButton.Font.Bold = true;
    linkButton.Font.Size = 14;
    linkButton.Font.Underline = false;
    linkButton.Text = itemList[i].ItemTitle.InnerText;
    linkButton.Click += new EventHandler(LinkButton_Click);
    linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText);
    PlaceHolder1.Controls.Add(linkButton); 

    //Add This
    PlaceHolder1.Controls.Add(new LiteralControl("<br />"));


    Label label = new Label();
    label.ID = "LabelDynamicInPlaceHolder1Id" + i;
    label.ForeColor = Color.DarkGray;
    label.Text = itemList[i].ItemDescription.InnerText;
    PlaceHolder1.Controls.Add(label);

Autres conseils

Une autre solution consiste à ajouter chaque contrôle à un panneau, ce qui les rendra chacun dans un <div>, ce qui donnera l'effet recherché.

Pour moi, cela serait plus dynamique, car si vous masquez l'un des contrôles, la div se réduira et ne laissera pas de lignes vides.

    LinkButton linkButton = new LinkButton();
    linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i;
    linkButton.ForeColor = Color.Blue;
    linkButton.Font.Bold = true;
    linkButton.Font.Size = 14;
    linkButton.Font.Underline = false;
    linkButton.Text = itemList[i].ItemTitle.InnerText;
    linkButton.Click += new EventHandler(LinkButton_Click);
    linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText);

    //Add control to a panel, add panel to placeholder
    Panel lbPan = new Panel();
    lbPan.Controls.Add(linkButton); 
    PlaceHolder1.Controls.Add(lbPan);


    Label label = new Label();
    label.ID = "LabelDynamicInPlaceHolder1Id" + i;
    label.ForeColor = Color.DarkGray;
    label.Text = itemList[i].ItemDescription.InnerText;

    //Add control to a panel, add panel to placeholder
    Panel lblPan = new Panel();
    lblPan.Controls.Add(label); 
    PlaceHolder1.Controls.Add(lblPan);

Comment: ajouter des contrôles à une page Web ASP.NET par programme

  

Dans certains cas, vous voudrez peut-être   créer du texte statique et des contrôles.    Pour créer du texte statique, vous pouvez utiliser un serveur Web Literal ou Label.   contrôle . Vous pouvez ensuite ajouter ces   contrôles au conteneur comme vous le feriez   tout autre contrôle. Pour information   à propos de l'état d'affichage dans les contrôles créés   au moment de l'exécution, voir Serveur Web dynamique   Contrôles et état d'affichage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top