10. maj 2005 - 13:40
Der er
6 kommentarer og 1 løsning
Hjælp til fejl i repeater
Jeg får følgende fejl i min repeater: Kompileringsfejl Beskrivelse: Der opstod en fejl under kompilering af en ressource, der er påkrævet ved behandling af denne anmodning. Læs følgende detaljer om fejlen, og foretag de nødvendige ændringer af kildekoden. Fejlmeddelelse om kompileringsfunktion: CS0117: 'System.Web.UI.Control' indeholder ikke en definition af 'DataItem' Linje 44: </tr> Linje 45: <tr> Linje 46: <td class="tekst_overskrift"><%# DataBinder.Eval(Container.DataItem, "navn") %></td> Linje 47: </tr> Linje 48: <tr> Hvad er der galt?
Annonceindlæg fra Barco
er det sådan her du mener: Linje 44: </tr> Linje 45: <tr> Linje 46: <td class="tekst_overskrift"><asp:Label id="navn" Text='<%# DataBinder.Eval(Container.DataItem, "navn") %>' Runat="Server"/></td> Linje 47: </tr> Linje 48: <tr> for så får jeg stadig samme fejl.
Hej snepnet! Min repeater er en stor mundfuld for jeg bruger nested repeater, men her kommer det... ASPX <asp:Repeater ID="overRepeater" Runat="Server"/> <ItemTemplate> <tr> <td> </td> </tr> <tr> <td class="tekst_overskrift"><asp:Label id="navn" Text='<%# DataBinder.Eval(Container.DataItem, "navn") %>' Runat="Server"/></td> </tr> <tr> <td style="height: 5px"><img src="images/space.gif" style="width: 1px; height: 0px" alt=""></td> </tr> <tr> <td style="width: 100%"> <table style="width: 100%"> <tr> <td class="listetop" style="text-align: left"><strong>Navn</strong></td> <asp:Repeater ID="overskriftRepeater" runat="server"> <ItemTemplate> <td class="listetop"><strong><%# DataBinder.Eval(Container.DataItem, "navn") %></strong></td> </ItemTemplate> </asp:Repeater> </tr> <asp:Repeater ID="produktRepeater" runat="server"> <ItemTemplate> <tr style="background-color: #CBCBCB" onclick="location.href='visprodukt.aspx?hovedkatid=<%=hovedkatId.Text%>&underkatid=<%=underkatId.Text%>&underkatnavn=<%=brod_krumme_under.Text%>&hovedkatnavn=<%=brod_krumme_hoved.Text%>&produktid=<%# DataBinder.Eval(Container.DataItem, "produktid") %>'" onmouseover="changeBg(this,true);" onmouseout="changeBg(this,true)"> <td class="liste" style="text-align: left" ><%# DataBinder.Eval(Container.DataItem, "navn") %></td> <asp:Repeater ID="linieRepeater" Runat="Server"> <ItemTemplate> <td class="liste"><%# DataBinder.Eval(Container.DataItem, "vaerdie") %></td> </ItemTemplate> </asp:Repeater> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr style="background-color: #EEEEEE" onclick="location.href='visprodukt.aspx?hovedkatid=<%=hovedkatId.Text%>&underkatid=<%=underkatId.Text%>&underkatnavn=<%=brod_krumme_under.Text%>&hovedkatnavn=<%=brod_krumme_hoved.Text%>&produktid=<%# DataBinder.Eval(Container.DataItem, "produktid") %>'" onmouseover="changeBg(this,false);" onmouseout="changeBg(this,false)"> <td class="listealt" style="text-align: left"><%# DataBinder.Eval(Container.DataItem, "navn") %></td> <asp:Repeater ID="linieRepeater" Runat="Server"> <ItemTemplate> <td class="listealt"><%# DataBinder.Eval(Container.DataItem, "vaerdie") %></td> </ItemTemplate> </asp:Repeater> </tr> </AlternatingItemTemplate> </asp:Repeater> </table> </td> </tr> </ItemTemplate> </asp:Repeater> CS I Pageload string sqlOver = "SELECT DISTINCT produkt.underkatId, underkategoriData.navn " + "FROM underkategoriData INNER JOIN " + "produkt ON underkategoriData.underkatId = produkt.underkatId INNER JOIN " + "produktData ON produkt.produktId = produktData.produktId " + "WHERE produktData.aktiv = 1 AND (produktData.navn LIKE '%" + soegeord.Text + "%') "; string sqlProduktData = "SELECT produktdata.produktId, produktdata.navn, underkatId " + "FROM produkt INNER JOIN produktdata ON " + "produkt.produktId = produktdata.produktId " + "WHERE aktiv = 1;"; string sqlSpecifikation = "SELECT specifikation.specId, specifikationsData.navn, underKatSpec.underkatId " + "FROM underKatSpec INNER JOIN " + "specifikation ON underKatSpec.specId = specifikation.specId INNER JOIN "+ "specifikationsData ON specifikation.specId = specifikationsData.specId " + "WHERE (underKatSpec.medtagesIOversigt = 1) "; string sqlBeskrivelse = "SELECT vaerdie, beskrivelse.produktId, specId, underkatId " + "FROM beskrivelse INNER JOIN " + "produkt ON beskrivelse.produktId = produkt.produktId " + "WHERE (beskrivelse.produktId IN " + "(SELECT produkt.produktId " + "FROM produkt INNER JOIN " + "produktData ON produkt.produktId = produktData.produktId " + "WHERE produktData.aktiv = 1 AND produktData.navn LIKE '%" + soegeord.Text + "%')) AND (specId IN " + "(SELECT specId " + "FROM underkatspec " + "WHERE medtagesIOversigt = 1))"; DataSet ds = SqlHelper.ExecuteDataset(connStr, CommandType.Text, sqlOver + sqlProduktData + sqlSpecifikation + sqlBeskrivelse); DataRelation relation = new DataRelation("underkatId", ds.Tables["Table"].Columns["underkatId"], ds.Tables["Table1"].Columns["underkatId"]); ds.Relations.Add(relation); DataRelation relation1 = new DataRelation("underkatId1", ds.Tables["Table"].Columns["underkatId"], ds.Tables["Table3"].Columns["underkatId"]); ds.Relations.Add(relation1); DataRelation relation2 = new DataRelation("produktId", ds.Tables["Table1"].Columns["produktId"], ds.Tables["Table3"].Columns["produktId"]); ds.Relations.Add(relation2); overRepeater.DataSource = ds.Tables["Table"].DefaultView; overRepeater.DataBind(); private void overRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { ((Repeater) e.Item.FindControl("overskriftRepeater")).DataSource = ((DataRowView) e.Item.DataItem).CreateChildView("underkatId1"); ((Repeater) e.Item.FindControl("overskriftRepeater")).DataBind(); ((Repeater) e.Item.FindControl("produktRepeater")).DataSource = ((DataRowView) e.Item.DataItem).CreateChildView("underkatId"); ((Repeater) e.Item.FindControl("produktRepeater")).DataBind(); } } private void produktRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { ((Repeater) e.Item.FindControl("linieRepeater")).DataSource = ((DataRowView) e.Item.DataItem).CreateChildView("produktId"); ((Repeater) e.Item.FindControl("linieRepeater")).DataBind(); } } Jeg håber du kan overskue det!
tak spids ... ja der var da lidt at gå ombord i - godt at se at du får gået til makronerne ;o) nå - men jeg tror at din fejl er, at du afslutter din første repeater med det samme : <asp:Repeater ID="overRepeater" Runat="Server"/> mon ikke det holder hvis du fjerne / altså sådan her : <asp:Repeater ID="overRepeater" Runat="Server"> mvh