Question

Chaque échantillon que j'ai trouvé de le faire consiste à écrire une fonction en dehors de OnLoad de ma page afin de le faire, mais je suis curieux de savoir s'il y a une façon plus concise pour aller à ce sujet. J'ai une étiquette à l'intérieur d'un HeaderTemplate, et je veux juste mettre le texte de l'étiquette à une chaîne. Je peux faire ce qui suit si l'étiquette est en dehors du répéteur:

Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));

Y at-il une façon succincte de le faire?

Était-ce utile?

La solution

Essayez les dans votre modèle d'en-tête:

<asp:Label ID="Month" runat="server" Text='<%# (Month)Convert.ToInt16(MonthList.SelectedValue) %>' />

Autres conseils

Il serait mieux si vous avez utilisé l'événement DataBinding.

balisage ASPX:

<asp:Repeater ID="repTest" runat="server">
    <HeaderTemplate>
        <asp:Label ID="lblHeader" runat="server" />
    </HeaderTemplate>
</asp:Repeater>

Code de derrière:

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";
        }
    }
}

Il vous allez:)

Je ne suis pas certain à 100% que vous avez besoin ou non d'attendre le répéteur d'avoir des données qui lui sont liés ou non, mais c'est comment vous accéder à un contrôle au sein de son en-tête:

var myLabel = MyRepeater.Controls[0].Controls[0].FindControl("MyLabel") as Label;
myLabel.Text = "Hello World";

Vous devriez probablement briser cela en plusieurs lignes et assurez-vous qu'il ya un objet à des contrôles [0].

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