2017-11-21 13 views
0

私はプール競争の登録メンバーで満たされたGridviewを持っています。現在2ページあり、下段に「256人中23人が登録されています」というラベルを表示しています。ただし、この例では、登録された20人のプレイヤーをページ1にカウントし、ページ2に切り替えると「256人中3人が登録されています」と表示されます。どのようにしてこれを変更して、すべてのページから登録プレーヤーの合計をカウントするか(現在は23でなければなりません)。ここではSQLデータソースは次のようにloksグリッドビュー/データソースの合計行を計算します

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

..私が持っているものです。..

<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> 

が続いてGridViewの開始..

  <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... 

答えて

0

GridViewRowCollection.Countは現在のGridViewページ内のすべての行をカウントページネーションが使用されるとき。 GridViewで示される行全体をカウントするには、データソースレベル(つまり、SqlDataSource)から行う必要があります。あなたが背後にあるコードでSqlDataSourceためSelectedイベントを処理し、すべての出力行の数を示すために、AffectedRows整数プロパティを使用することができます

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 

同様の問題:

Count total rows of gridview with pagination

関連する問題