Avatar billede bumle90 Nybegynder
25. december 2004 - 12:24 Der er 5 kommentarer

Problemer med min repeater

Jeg har en nested repeater med 3 niveauer i.
Problemet er at når jeg skal skrive ud fra niveau nr. 2 kan den ikke genkende kolonnenavnene. For at specificere mit problem lidt mere har jeg har selve aspx-koden her:

<!-- start parent repeater -->
<asp:repeater id="parentRepeater" runat="server">
  <itemtemplate>
      <b><%# DataBinder.Eval(Container.DataItem,"STED_NR") %></b><br>

      <!-- start child repeater -->
      <asp:repeater id="childRepeater" datasource='<%# ((System.Data.DataRowView)Container.DataItem)
      .Row.GetChildRows("sted_automat_relation") %>' runat="server">

        <itemtemplate>
            <%# DataBinder.Eval(Container.DataItem, "AUT_NR")%><br>
               
                <!-- start grandchild repeater -->
                <asp:repeater id="grandchildRepeater" datasource='<%# ((System.Data.DataRowView)Container.DataItem)
                    .Row.GetChildRows("automat_bestillingslinier_relation") %>' runat="server">

                    <itemtemplate>
                        <%# DataBinder.Eval(Container.DataItem, "OENSKE_DATO")%><br>
                    </itemtemplate>
                </asp:repeater>
                <!-- end grandchild repeater -->
       
        </itemtemplate>
      </asp:repeater>
      <!-- end child repeater -->

  </itemtemplate>
</asp:repeater>
<!-- end parent repeater -->

Det er altså inde i child-repeater jeg får at vide at den ikke kan finde kolonnen "AUT_NR". Det forstår jeg ikke helt.
Jeg har prøvet at teste det ved se hvilke kolonner der i de childrows. Det har jeg gjort på følgende måde:

private void parentRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
        {
            System.Data.DataRowView drv=(System.Data.DataRowView)e.Item.DataItem;
            System.Data.DataRow[] rowarr=drv.Row.GetChildRows("sted_automat_relation");

        }

Jeg har sat breakpoint således at jeg kan se indholdet af rowarr, og deri eksisterer ganske rigtigt en kolonne kaldet AUT_ID.
Så det er på en eller anden måde aspx filen der ikke rigtig kan finde ud af den nestede struktur.
Jeg håber meget på svar da jeg snart skal have det her kode færdigt :)
Mange venlig hilsner herfra...
Avatar billede tomjelen Nybegynder
25. december 2004 - 15:21 #1
Jeg har en gang imellem haft problemer med, at jeg skal have nogle brackets ind rundt om kolonne navnene, når jeg bruger datarelations, hvilket er det jeg går ud fra du gør der. Har desværre aldrig rigtigt fattet hvorfor.

Så din linie der ser således ud:
<%# DataBinder.Eval(Container.DataItem, "AUT_NR")%>
kan måske give success hvis den ser således ud:
<%# DataBinder.Eval(Container.DataItem, "[\"AUT_NR\"]")%>

Ved ikke om det er det der er dit problem. Og hvis det er, så ville jeg være glad hvis du kunne fortælle hvorfor det sker hehe.
Avatar billede bumle90 Nybegynder
25. december 2004 - 19:25 #2
Hmmm det har de også skrevet i den artikel jeg har læst i...men jeg har gået ud fra at det ikke var nødvendigt....Jeg prøver lige at se om det er det der er galt...
Tak for tippet...vender tilbage :)
Avatar billede bumle90 Nybegynder
25. december 2004 - 19:31 #3
Hold da fest....Det ser sq ud til at virke :)

Nu får jeg bare følgende fejl i grandchild-relationen....Kan du evt. gennemskue hvad det kan være?

Specified cast is not valid.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Specified cast is not valid.

Source Error:


Line 13:                
Line 14:                 <!-- start grandchild repeater -->
Line 15:                 <asp:repeater id="grandchildRepeater" datasource='<%# ((System.Data.DataRowView)Container.DataItem)
Line 16:                     .Row.GetChildRows("automat_bestillingslinier_relation") %>' runat="server">
Line 17:


Source File: c:\inetpub\wwwroot\vegasonline\UIL\SearchResults.ascx    Line: 15
Avatar billede bumle90 Nybegynder
25. december 2004 - 20:49 #4
Okay...jeg ordnede det....

En funktion i code behind klarede sagerne :)

        protected DataView GetChildRelation(object dataItem,
            string relation)
        {
            DataRowView drv = dataItem as DataRowView;
            if (drv != null)
                return drv.CreateChildView(relation);
            else
                return null;
        }
Har du en god ide til hvordan man kunne dele siderne op hvis man skal lave paging på sådan en 3-niveau svend?
Jeg har som nu lavet en paging der viser enten en hel niveau 1 el. så mange der nu kan være på fx. 50 linier.
Dvs. at jeg kan risikere at siderne får ret forskellige længder...
Avatar billede tomjelen Nybegynder
26. december 2004 - 16:05 #5
Ved ikke helt hvad du mener med "paging". Normalt lister jeg bare data'en i en eller flere tabeller. Hvis det bliver for uoverskueligt tilføjer jeg nogle gange noget javascript til at "åbne/lukke" niveauer.
Design af gui er ikke lige det jeg er stærkest i.
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