Wie Zeilenumbrüche zwischen dynamisch generierten Etikett in einem Platzhalter erstellen?
-
06-07-2019 - |
Frage
Dies ist der Code unten in Code hinter Page_Load
Ereignisse der Datei:
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);
Ich möchte einen Zeilenumbruch zwischen den einzelnen Steuer erzeugt wird.
Lösung
Lösung Ihres Zeilenumbruch Problem ist unten jedoch, wenn Sie dies in dem Ereignisse Page Load tun, dann Ihrem Event-Handler wird nicht funktionieren und Ihr in Seite Life Cycle Probleme gehen laufen. Im Grunde genommen, um für Ihre Event-Handler auf Postback zu schießen, die Sie wirklich brauchen diese dynamischen Kontrollen früher im Lebenszyklus der Seite zu erschaffen. Versuchen Sie, Ihren Code an die OnInit Methode zu bewegen, wenn Sie in dieses Problem haben.
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);
Andere Tipps
Eine andere Lösung ist, dass Sie jede Kontrolle eines Panel hinzufügen könnte, die sie jeweils in einem <div>
machen wird in der Wirkung führt, die Sie suchen.
Für mich wäre dynamischer denn wenn Sie eine der Kontrollen verstecken die div kollabieren und lassen keine Leerzeilen.
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);
Gewusst wie: Hinzufügen von Steuerelementen zu einer ASP.NET-Seite Programmatically
In einigen Fällen möchten Sie vielleicht Erstellen sowohl statischen Text und Kontrollen. statischen Text erstellen, können Sie entweder ein Literal oder ein Label-Webserver Kontrolle . Sie können dann diese steuert auf den Behälter, wie Sie es andere Kontrolle. Zur Information über Anzeigestatus in Kontrollen geschaffen zur Laufzeit finden Sie unter Dynamische Web-Server Bedienelemente und Anzeigestatus.