webForumDet fria alternativet

asp:repeater skippar första raden

.NET

3 svar · 482 visningar · startad av freddyk

Medlem sedan okt. 2006103 inlägg
Frågan#1

När jag använder mig av en asp:repeater för att visa data från en databas skippar repeatern att visa första dataraden från databasen.

SPn visar alla rader som de ska men Repeatern skippar första raden. Har sammanlagt 12 rader från databasen.

Någon som vet varför den gör så? Förslag på lösning. Helskumt. :)

Bakom-koden

            //Aktiverar en SP från databasen
            MyCommand = new SqlCommand("isy_Sida_getSidstatistik", MyConnection);
            MyCommand.CommandType = CommandType.StoredProcedure;
            MyCommand.Connection = MyConnection;
            try
            {
                //Öppnar en koppling till databasen.
                MyCommand.Connection.Open();
                MyReader = MyCommand.ExecuteReader();
                while (MyReader.Read())
                {
                    rptrPageStats.DataSource = MyReader;
                    rptrPageStats.DataBind();
                }
            }
            catch
            {
            }
            finally
            {
                MyReader.Close();
                MyConnection.Close();
            }

asp:repeatern

<asp:Repeater ID="rptrPageStats" runat="server" Visible="true" >
    <HeaderTemplate>
    <table width="300px">
        <tr>
            <td colspan="4">
                <h1><img src="../images/besokare.gif" width="20px" height="20px" alt="Besöksstatistik"/>&nbsp;Besöksstatistik</h1>
            </td>
        </tr>
        <tr align="left" style="font-weight:bold;">        
            <td style="width:100px;text-align:center;">
                <asp:Label ID="Label8" runat="server" CssClass="normalText" Text=" "></asp:Label>
            </td>
            <td style="width:100px;text-align:center;border-right: solid 1px #4F90BC;" colspan="3">
                <asp:Label ID="Label1" runat="server" CssClass="normalText" Text="UNIKA"></asp:Label>
            </td>
            <td style="width:100px;text-align:center;border-left: solid 1px #4F90BC;" colspan="3">
                <asp:Label ID="Label2" runat="server" CssClass="normalText" Text="TOTALA"></asp:Label>
            </td>
        </tr>
        <tr align="left" style="font-weight:bold;">
            <td style="width:100px;text-align:left;">
                <asp:Label ID="Label13" runat="server" CssClass="normalText" Text="Sida"></asp:Label>
            </td>       
            <td style="width:100px;text-align:center;">
                <asp:Label ID="Label3" runat="server" CssClass="normalText" Text="D"></asp:Label>
            </td>
            <td style="width:100px;text-align:center;">
                <asp:Label ID="Label9" runat="server" CssClass="normalText" Text="M"></asp:Label>
            </td>
            <td style="width:100px;text-align:center;border-right: solid 1px #4F90BC;">
                <asp:Label ID="Label10" runat="server" CssClass="normalText" Text="T"></asp:Label>
            </td>       
            <td style="width:100px;text-align:center;border-left: solid 1px #4F90BC;">
                <asp:Label ID="Label7" runat="server" CssClass="normalText" Text="D"></asp:Label>
            </td>
            <td style="width:100px;text-align:center;">
                <asp:Label ID="Label11" runat="server" CssClass="normalText" Text="M"></asp:Label>
            </td>
            <td style="width:100px;text-align:center;">
                <asp:Label ID="Label12" runat="server" CssClass="normalText" Text="T"></asp:Label>
            </td>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr align="left" onmouseover="this.style.backgroundColor='#2172A1';this.style.color='#FFFFFF';" onmouseout="this.style.backgroundColor='#FFFFFF';this.className='normalText';">
        <td>
            <asp:Label ID="lblPageName" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"PAGE") %>'></asp:Label>
        </td>
        <td style="text-align:center;">
            <asp:Label ID="lblToday" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"UNITODAY") %>'></asp:Label>
        </td>
        <td style="text-align:center;">
            <asp:Label ID="lblMonthly" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"UNIMONTHLY") %>'></asp:Label>
        </td>
        <td style="text-align:center;border-right: solid 1px #4F90BC;">
            <asp:Label ID="lblTotal" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"UNITOTAL") %>'></asp:Label>
        </td>
        <td style="text-align:center;border-left: solid 1px #4F90BC;">
            <asp:Label ID="Label4" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"TOTTODAY") %>'></asp:Label>
        </td>
        <td style="text-align:center;">
            <asp:Label ID="Label5" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"TOTMONTHLY") %>'></asp:Label>
        </td>
        <td style="text-align:center;">
            <asp:Label ID="Label6" runat="server" CssClass="normalText" Text='<%# DataBinder.Eval(Container.DataItem,"TOTTOTAL") %>'></asp:Label>
        </td>
    </tr>        
    </ItemTemplate>
    <FooterTemplate></table></FooterTemplate>
</asp:Repeater>

Använder. SQL server 2005 samt VS2005. ASP.NET 2.0

Medlem sedan sep. 20011 914 inlägg
#2
try
{
   //Öppnar en koppling till databasen.
   MyCommand.Connection.Open();
   rptrPageStats.DataSource = MyCommand.ExecuteReader();
   rptrPageStats.DataBind();
}
Medlem sedan okt. 2006103 inlägg
#3

Det fungerade klockrent, Dino. Tack! :birp

Har du lust att förklara vad jag gjorde knas så är jag oerhört tacksam men inget måste ;)

Hade det att göra med while-loopen?

Medlem sedan sep. 20011 914 inlägg
#4

Vid MyReader.Read() så har readern läst in första raden och vid tillfället när du binder den till Datasourcen så har readern lagt första raden bakom sig och rad två är nu först.

Och while loopen och MyReader.Read() tjänar inget syfte eftersom repeaten tar hand om eventuell databinding..

262 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)