Avatar billede forceprogrammer Nybegynder
13. april 2005 - 15:06 Der er 8 kommentarer og
1 løsning

Undgå udskrift af header og footer i repeater

Jeg har en repeater med <HeadTemplate></HeadTemplate>,<ItemTemplate></ItemTemplate> og <FooterTemplate></FooterTemplate>

Jeg vil dog imdlertid _KUN_ udskrive den HTML der står i
<HeadTemplate></HeadTemplate> og <FooterTemplate></FooterTemplate>

Hvis repeaterens datasource IKKE er tom. Så hvis altså den er tom skal der hverken skrives header el. footer. Hvordan gør jeg det?
mvh
.
Avatar billede jokkejensen Novice
13. april 2005 - 15:13 #1
hvis du ikke databinder vil intet i repeateren vises... så før du databinder så tjek om der findes noget i den kilde du smider på...
Avatar billede forceprogrammer Nybegynder
13. april 2005 - 15:14 #2
hmm men jeg databinder i ascx filen...Det er nestede repeaters, så jeg gør det on the fly
Avatar billede jokkejensen Novice
13. april 2005 - 15:30 #3
okay.. jeg bruger det selv på en række sider.. hvor jeg bare har kastet alle mine repeateres i default.aspx og alt efter querystring databinder jeg den repeater jeg vil have skal vises.. det virker fint..

og det burde også kunne gøres i user controls..
Avatar billede forceprogrammer Nybegynder
13. april 2005 - 15:34 #4
Du kan prøve at se problemet...

Det er de to inderste repeaters der kun skal vises hvis de indeholder data. Den yderste vil altid indeholde data:

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="Kunde_sted_automat.ascx.cs" Inherits="vegasonline.UIL.Kunde_sted_automat" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<asp:repeater id="parentRepeater" runat="server" enableviewstate=true>
    <HeaderTemplate>
        <table border=1>
    </HeaderTemplate>
    <ItemTemplate>
        <tr bgcolor=<%=vegasonline.Global.OverskriftKundeColor%> id="sd<%# ParentCtr%>" style="COLOR: white;font-size:14px;">
            <td>
                <%# DataBinder.Eval(Container.DataItem,"KUNDE_ADRESSE")%>&nbsp;
                <%# DataBinder.Eval(Container.DataItem,"KUNDE_NAVN")%>
            </td>
        </tr>
        <asp:repeater id="childRepeater" enableviewstate=true
            datasource='<%# GetRelation(Container.DataItem,"kunde_sted_relation") %>'
            runat="server">
            <HeaderTemplate>
                <tr><td>
                    <table border=0 ID="Table1">
                   
            </HeaderTemplate>
            <ItemTemplate>
                <tr bgcolor=<%=vegasonline.Global.OverskriftStedColor%> id="<%# ParentCtr%>" style="COLOR: white;font-size:12px;">
                    <td>
                        <img src="images/+.bmp" style="cursor:hand;" onclick="collapseit(<%# DataBinder.Eval(Container.DataItem,"[\"STED_NR\"]") %>,'collapsetAutomatTable','ALTERNATING')" id="collapseimg<%# DataBinder.Eval(Container.DataItem,"[\"STED_NR\"]") %>">
                        <%# DataBinder.Eval(Container.DataItem,"[\"STED_NAVN\"]") %>
                        (<%# DataBinder.Eval(Container.DataItem,"[\"STED_SYNONYM\"]")%>)&nbsp;&nbsp;&nbsp;
                        <%# DataBinder.Eval(Container.DataItem,"[\"STED_ADRESSE\"]")%>&nbsp;,
                        <%# DataBinder.Eval(Container.DataItem,"[\"POSTNR\"]")%>&nbsp;
                        <%# DataBinder.Eval(Container.DataItem,"[\"POSTBY\"]")%>
                        <a href="StedManage.aspx?stednr=<%# DataBinder.Eval(Container.DataItem,"[\"STED_NR\"]") %>&action=rediger" style="COLOR: white">Redigér</a>
                        <a href="StedBestilling.aspx?stednr=<%# DataBinder.Eval(Container.DataItem,"[\"STED_NR\"]") %>&action=quickOrder" style="COLOR: white">Opret Bestilling</a>
                    </td>
                </tr>
                <asp:repeater id="grandchildRepeater" enableviewstate=true
                datasource='<%# GetRelation(Container.DataItem,"sted_automat_relation") %>'
                runat="server">
                    <HeaderTemplate>
                        <tr><td>
                        <table border=0 ID="Table2" >
                        <tr bgcolor=<%=vegasonline.Global.OverskriftAutomatColor%> style="color:FFFFFF;">
                            <td>&nbsp;</td>
                            <td>
                                <b>Automatnavn</b>
                            </td>
                            <td>
                                <b>ID - nr.</b>
                            </td>
                            <td>
                                <b>Automattype</b>
                            </td>
                            <td>
                                <b>Kabinet</b>
                            </td>
                            <td>
                                <b>Elektronik</b>
                            </td>
                            <td>
                                <b>Program version</b>
                            </td>
                            <td>
                                <b>Fabrikat</b>
                            </td>
                            <td>
                                <b>Udløbsdato</b>
                            </td>
                            <td>
                                <b>Rediger</b>
                            </td>
                            <td>
                                <b>Bestilling</b>
                            </td>
                    </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr bgcolor=<%=vegasonline.Global.RowColorAutomat%>>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"AUT_NAVN\"]") %>&nbsp;
                            </td>
                            <td>   
                                <%# DataBinder.Eval(Container.DataItem,"[\"AUT_SER_NR\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"AUT_ART_NAVN\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"KAB_BETEGN\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"ELKTR_BETEGN\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"PROG_VERS\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"[\"FABR_BETEGN\"]") %>&nbsp;
                            </td>
                            <td>
                                <%# DateFormat(DataBinder.Eval(Container.DataItem,"[\"UDLOEB_DATO\"]")) %>&nbsp;
                            </td>
                        </tr>                        
                    </ItemTemplate>
                    <FooterTemplate>
                            </table>
                        </td></tr>
                    </FooterTemplate>
                </asp:repeater>
            </ItemTemplate>
            <FooterTemplate>
                    </table>
                </td></tr>
            </FooterTemplate>
        </asp:Repeater>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
Avatar billede forceprogrammer Nybegynder
13. april 2005 - 15:34 #5
Hvordan ville du skjule de 2 inderste repeaters?
Avatar billede burningice Nybegynder
13. april 2005 - 16:09 #6
hm.. dejavu.. :) har svaret på et nøjagtig lign. spørgsmål for ikke så længe siden

i din childRepeater, og grandchildRepeater skal du have abboneret på deres DataBinding-event. Her i kan skal du så tjekke på om der findes nogle records i den datasource du har brugt. Hvis ikke skal repeateren bare skjules.

eks.

<asp:repeater id="childRepeater" OnDataBinding="repeater_DataBinding" runat="server" />

protected void repeater_DataBinding(object sender, EventArgs e) {
    Repeater rpt = (Repeater)sender;

    DataTable dt = (DataTable)rpt.DataSource;
    if (dt.Rows.Count == 0) rpt.Visible = false;
}
Avatar billede forceprogrammer Nybegynder
13. april 2005 - 16:18 #7
Skal det ikke være et dataview og ikke en datatable?
Avatar billede forceprogrammer Nybegynder
13. april 2005 - 16:21 #8
men ellers er det smukt :)
Perfekt...Du er en knag hehe

takker
smid et svar professor
Avatar billede burningice Nybegynder
13. april 2005 - 16:32 #9
det var bare et eksempel.. jeg kunne ikke vide hvad du bruger som datasource :)
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