Einstellen MyLabel.Text in Repeater Header
-
23-08-2019 - |
Frage
Jede Probe ich, dies zu tun gefunden habe, besteht meine Seite eine Funktion außerhalb der OnLoad des Schreibens, um dies zu tun, aber ich bin neugierig, ob es eine prägnante Art und Weise ist, darüber zu gehen. Ich habe ein Label innerhalb eines Header, und ich möchte nur auf eine Zeichenfolge, die den Text des Etiketts einzustellen. Ich kann folgendes tun, wenn das Etikett außerhalb des Repeaters ist:
Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));
Gibt es eine prägnante Art und Weise, dies zu tun?
Lösung
Versuchen Sie Folgendes innen Ihre Header-Template:
<asp:Label ID="Month" runat="server" Text='<%# (Month)Convert.ToInt16(MonthList.SelectedValue) %>' />
Andere Tipps
Es wäre besser, wenn Sie das Databinding-Ereignis verwendet haben.
ASPX-Markup:
<asp:Repeater ID="repTest" runat="server">
<HeaderTemplate>
<asp:Label ID="lblHeader" runat="server" />
</HeaderTemplate>
</asp:Repeater>
-Code hinter:
protected void Page_Load(object sender, EventArgs e)
{
repTest.ItemDataBound += new RepeaterItemEventHandler(repTest_ItemDataBound);
int[] testData = { 1, 2, 3, 4, 5, 6, 7, 8 };
repTest.DataSource = testData;
repTest.DataBind();
}
void repTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
Label lblHeader = e.Item.FindControl("lblHeader") as Label;
if (lblHeader != null)
{
lblHeader.Text = "Something";
}
}
}
Sie gehen:)
Ich bin nicht 100% sicher, ob Sie warten müssen, für die Repeater-Daten an ihn gebunden haben oder nicht, aber das ist, wie Sie ein Steuerelement zugreifen würden in er Header sind:
var myLabel = MyRepeater.Controls[0].Controls[0].FindControl("MyLabel") as Label;
myLabel.Text = "Hello World";
Sie sollten wahrscheinlich, dass in mehrere Zeilen brechen und vergewissern Sie sich, dass es ein Objekt bei Kontrollen [0].