Avatar billede runenaess Nybegynder
13. januar 2008 - 21:10 Der er 5 kommentarer

Compiler Error Message: CS0103 ved Panel og Repeater

Hej eksperter

I min Class har jeg denne
LB_edit_wish.Visible = false;

men den bliver ved med at fejl..

Compiler Error Message: CS0103: The name 'LB_edit_wish' does not exist in the current context

kan man ikke neste elementer på denne måde.?
Eller skal man kalde LB_edit_wish på en bestemt måde ?
ala P_thelist.thelistrepeater.LB_edit_wish ?

//Source
<asp:Panel ID="P_thelist" runat="server"><br />THE LIST<br />
<asp:Repeater id="thelistrepeater" runat="server">
  <ItemTemplate>
  <asp:LinkButton runat="server" id="LB_edit_wish" Text="Edit wish" OnCommand="Navlink_Click" CommandName="editpost" />
    <%# DataBinder.Eval(Container.DataItem, "myheadline") %>
    <hr />
  </ItemTemplate>
</asp:Repeater>             
</asp:Panel>


-Rune
Avatar billede nielle Nybegynder
14. januar 2008 - 18:23 #1
Når du lægger kontroller ind i et panel, så skal di kigge efter dem i Panel'ets Controls-property - ikke i selve sidens.

I dette tilfælde ligger repeateren i:

this.P_thelist.Controls[1]
Avatar billede runenaess Nybegynder
14. januar 2008 - 21:00 #2
Hej nielle

Hvorfor this.P_thelist.Controls[1]... 1 fordi den er den første ?
og
this.P_thelist.Controls[LB_edit_wish]
virker heller ikke.

det skulle jo gerne virke så jeg kan "slukke" det link når det passer mig.
f.eks.
this.P_thelist.Controls[1] = false;
Avatar billede nielle Nybegynder
15. januar 2008 - 18:42 #3
> Hvorfor this.P_thelist.Controls[1]... 1 fordi den er den første ?

1 er nu ikke det første - arrays starter ved index 0.

Jeg kan ikke lige gennemskue "hvorfor" - men jeg kan se at det er sådan det ser ud ved at køre denne stump kode fra din side:

    protected void Page_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < this.P_thelist.Controls.Count; i++)
        {
            Response.Write(i + ": ");
            Response.Write(this.P_thelist.Controls[i].GetType().ToString());
            Response.Write("<br>");
        }
    }

Den resultere i dette:

0: System.Web.UI.LiteralControl
1: System.Web.UI.WebControls.Repeater
2: System.Web.UI.LiteralControl

og der kan jeg se at Repeateren ligger på index 1, og at der i øvrigt er en LiteralControl før og efter (index 0 og 2).


> this.P_thelist.Controls[LB_edit_wish] virker heller ikke.

LB_edit_wish er id'et på den indsatte LinkButton. For det første er den af typen string, og Controls[...] forventer et index af int. Det vil derfor slet ikke kompilere.

For det andet har id'et på LinkBox'en intet at gøre direkte med hvilket index den så eventuelt måtte ligge i Control-arrayet - hvis den altså ligger der (hvilket jeg ikke tror). Dette afhængere nemlig af primært hvor mange kontroller der er indsat før i rækkefølgen.


> det skulle jo gerne virke så jeg kan "slukke" det link når det passer mig.
> f.eks.
> this.P_thelist.Controls[1] = false;

Nu er Controls[] altså et array af kontroller - det er ikke et array af boolske variable, så det ville aldrig fungere sådan der.

Måske ville denne komme til at fungere:

this.P_thelist.Controls[1].Visible = false;

- men den vil jo nok skjule hele repeatern siden at det er denne som ligger på index 1 i Controls[] arrayet.

Hvis du ellers har flere rækker i din repeater, så vil du skulle ind og kunne skjule dem individuelt. Derfor kan du ikke bruge LB_edit_wish som jo ikke er specielt individuelt.
Avatar billede nielle Nybegynder
21. januar 2008 - 18:39 #4
Er du kommet vidre med denne her?
Avatar billede nielle Nybegynder
11. februar 2008 - 19:00 #5
??
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