Domanda

Questo è il codice seguente nel codice dietro l'evento Page_Load del file:

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

Voglio un'interruzione di riga tra ogni controllo generato.

È stato utile?

Soluzione

La soluzione al tuo problema di interruzione di riga è di seguito, tuttavia, se lo stai facendo nell'evento Page_Load, i gestori di eventi non funzioneranno e si verificheranno problemi con il ciclo di vita della pagina. Fondamentalmente, affinché i gestori di eventi possano attivare PostBack, è necessario creare questi controlli dinamici all'inizio del ciclo di vita della pagina. Prova a spostare il codice sul metodo OnInit se riscontri questo problema.

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

Altri suggerimenti

Un'altra soluzione è che puoi aggiungere ogni controllo a un Pannello, il che li renderà ciascuno in un <div> risultante nell'effetto che stai cercando.

Per me questo sarebbe più dinamico perché se nascondi uno qualsiasi dei controlli il div collasserà e non lascerà le righe vuote.

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

Procedura: aggiungere controlli a una pagina Web ASP.NET a livello di programmazione

  

In alcuni casi, potresti volerlo   creare sia testo statico che controlli.    Per creare testo statico, puoi utilizzare un server Web Literal o Label   Controllo . È quindi possibile aggiungere questi   controlli al contenitore come si farebbe   qualsiasi altro controllo. Per informazioni   sullo stato di visualizzazione nei controlli creati   in fase di esecuzione, consultare Dynamic Web Server   Controlli e visualizza stato.

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