2009-05-06 14 views
16

Questo è il codice qui sotto nel codice dietro la manifestazione del file Page_Load:Come creare interruzioni di riga tra le etichette generate dinamicamente in un segnaposto?

 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 linea tra ogni controllo generato.

risposta

39

La soluzione al problema di interruzione di linea è tuttavia inferiore, se lo stai facendo nell'evento Page_Load, i gestori di eventi non funzioneranno e si verificheranno problemi di pagina Life Cycle. Fondamentalmente, affinché i gestori di eventi si attivino su PostBack, è necessario creare questi controlli dinamici in precedenza in Page Life Cycle. 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); 
1

How to: Add Controls to an ASP.NET Web Page Programmatically

In alcuni casi, si potrebbe desiderare di creare testo e controlli statici. Per creare testo statico, è possibile utilizzare un server Web letterale o di etichetta . È quindi possibile aggiungere questi controlli al contenitore come se fosse qualsiasi altro controllo. Per informazioni su sullo stato di visualizzazione nei controlli creati in fase di esecuzione, consultare Controlli e stato di visualizzazione del server Web dinamico .

3

Un'altra soluzione è che è possibile aggiungere ciascun controllo a un pannello, che li renderà ciascuno in un <div> risultante nell'effetto che si sta cercando.

Per me questo sarebbe più dinamico perché se si nasconde uno dei controlli il div collasserà e non lascerà le linee 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); 
Problemi correlati