Avatar billede c-sharp Nybegynder
24. februar 2006 - 13:07 Der er 10 kommentarer og
2 løsninger

Hvordan kan jeg tilgå en label i headertemplate fra codebehind

jeg har nogle labels i en headertemplate som jeg skal have sat en tekst på, men hvordan tilgåes disse fra codebehind?
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 13:14 #1
du kan prøve med gridview.FindControl
Avatar billede c-sharp Nybegynder
24. februar 2006 - 13:46 #2
hej dr_chaos, tak for din kommentar :-)

FindControl finder ikke noget i HeaderTemplate
Avatar billede dr_chaos Nybegynder
24. februar 2006 - 14:20 #3
du skal bruge:
Dropdownlist d = ditGridview.Controls[0].Controls[0].FindControl("DropDownList1") as DropDownList;
Avatar billede c-sharp Nybegynder
24. februar 2006 - 14:41 #5
Jeg har nu prøvet følgende:

Label d = (Label)vareListe.Controls[0].Controls[0].FindControl("varenr");

og får følgende fejl:

Specified argument was out of the range of valid values. Parameter name: index

Det skal lige nævnet at det er en repeater jeg bruger.
Avatar billede snepnet Nybegynder
25. februar 2006 - 10:18 #6
hej c ... kan du ikke bare gøre det i forbindelse med at du databinder repeateren?

<asp:Repeater ID="rep" runat="server" OnItemDataBound="rep_ItemDataBound">
    <HeaderTemplate>
        <asp:Label ID="lblHeader" runat="server"></asp:Label>
        <br />
    </HeaderTemplate>
    <ItemTemplate>
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        <br />
    </ItemTemplate>
</asp:Repeater>

og en handler af itemdatabound:
protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        Label header = e.Item.FindControl("lblHeader") as Label;
        header.Text = "yuhah";
    }
}

men du skulle sådan set kunne gøre det som chaos skriver:

if (!IsPostBack)
{
    ArrayList liste = new ArrayList();
    liste.Add(new Person("hans"));
    liste.Add(new Person("grete"));

    rep.DataSource = liste;
    rep.DataBind();
}

else
{
    // det her skal gå godt med ovenstående repeater
    Label lblHeader = rep.Controls[0].Controls[0].FindControl("lblHeader") as Label;
    lblHeader.Text = "PostBack";
}

mvh
Avatar billede c-sharp Nybegynder
28. februar 2006 - 11:06 #7
Tak for alt jeres hjælp, det driller mig lidt det her...

det hele skal munde ud i at jeg ikke skal have vist header template hvis ingen data der er i min repeater. Der må være en nem måde hvor med man kan fjerne header templaten?
Avatar billede snepnet Nybegynder
28. februar 2006 - 11:21 #8
Du kan bare skjule repeateren hvis der ikke er data.
mvh
Avatar billede snepnet Nybegynder
28. februar 2006 - 11:21 #9
(someRepeater.Visible = false)
mvh
Avatar billede c-sharp Nybegynder
28. februar 2006 - 13:22 #10
Ja nu roder jeg sq godt og grundigt rundt i det det, men det kan i jo ikke gøre for :-) Jeg takker mange gange for jeres hjælp, smid nogle svar så er der pint på vej.
Avatar billede dr_chaos Nybegynder
28. februar 2006 - 13:24 #11
svar :)
Avatar billede snepnet Nybegynder
28. februar 2006 - 13:27 #12
det var så lidt - hold dig munter til vi skrives ved igen :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester