2017-11-21 2 views
0

Ich habe eine Gridview, die mit registrierten Mitgliedern eines Poolwettbewerbs gefüllt ist. Es hat momentan 2 Seiten und unten versuche ich zum Beispiel folgendes anzuzeigen: "23 von 256 Spielern haben sich registriert" als Label. In diesem Beispiel zählt es jedoch nur die 20 registrierten Spieler für Seite 1, und wenn Sie zu Seite 2 wechseln, heißt es "3 von 256 Spielern haben sich registriert". Wie ändere ich das, um die Gesamtzahl der registrierten Spieler von allen Seiten zu zählen (derzeit sollte 23 sein). Hier ist, was ich habe ..Gesamtzeilen in einer Gridview/DataSource berechnen

lblPlayersCount.Text = gdvEntrants.Rows.Count.ToString & " out of " & session("maxPlayers") & " players have registered." 

Die SQL Datasource wie folgt loks ..

<asp:SqlDataSource ID="DSFixtures" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" SelectCommand=" 
SELECT 
tblFixtures.player1, tblFixtures.resultPlayer1, 
(SELECT contactname FROM tblaccounts WHERE (accountID = 
tblFixtures.player1)) AS player1_name, 
tblFixtures.player2, tblFixtures.resultPlayer2, 
(SELECT contactname FROM tblaccounts WHERE (accountID = tblFixtures.player2)) AS player2_name, 
tblFixtures.compID, 
tblFixtures.round 
FROM tblFixtures INNER JOIN tblCompetitions ON tblFixtures.compID = 
tblCompetitions.compID WHERE tblFixtures.compID = @Event_ID AND round = @Round "> 


<SelectParameters> 
    <asp:QueryStringParameter QueryStringField="compID" Name="Event_ID" /> 
    <asp:QueryStringParameter QueryStringField="round" Name="Round" /> 
</SelectParameters> 

</asp:SqlDataSource> 

Dann werden die gridview startet ..

  <asp:Gridview ID="gdvFixtures" visible="true" width="100%" runat="server" AllowPaging="True" AutoGenerateColumns="False" CssClass="mGrid" DataKeyNames="compID" DataSourceID="DSFixtures" PageSize="20" AllowSorting="True"> 
Bla Bla Bla... 

Antwort

0

GridViewRowCollection.Count zählt nur alle Zeilen in der aktuellen GridView Seite wenn Paginierung verwendet wird. Um ganze Zeilen zu zählen, die durch GridView angezeigt werden, müssen Sie dies von der Datenquellenebene aus tun, d. H. SqlDataSource.

Sie Selected Ereignis für SqlDataSource in Code hinter verarbeiten können und AffectedRows integer Eigenschaft Anzahl aller Ausgabezeilen zeigen:

Protected Sub DSFixtures_Selected(ByVal sender As Object, ByVal e As SqlDataSourceStatusEventArgs) 
    lblPlayersCount.Text = e.AffectedRows & " out of " & Session("maxPlayers") & " players have registered." 
End Sub 

ähnliche Ausgabe:

Count total rows of gridview with pagination

Verwandte Themen