Scott on Writing

Musings on technical writing...

BUG: Off-By-One Error in the Paging/Sorting with the DataList or Repeater Tutorials

Alert Working with Data in ASP.NET 2.0 tutorial reader Nathan P. wrote in to let me know that there is a small bug in the code for the paging and sorting with the DataList and Repeater tutorials. It's a silly off-by-one error that I should have caught long before turning in the tutorials.

In any event, the problem in the default paging examples is in computing the PageCount. I use:

    1 private int PageCount

    2 {

    3     get

    4     {

    5         return (TotalRowCount / PageSize) + 1;

    6     }

    7 }

Which works well unless TotalRowCount and PageSize are evenly divisible. For example, let TotalRowCount = 79 and PageSize = 10, then this formula works as desired since 79/10 = 7, and 7+1 = 8, indicating that there are, indeed, 8 pages. But if there are 80 records in total, then 80/10 = 8, and 8+1 = 9, even though there are just 8 pages of data.

I fixed this by changing this to the following:

    1 private int PageCount

    2 {

    3     get

    4     {

    5         if (TotalRowCount <= 0 || PageSize <= 0)

    6             return 1;

    7         else

    8             return ((TotalRowCount + PageSize) - 1) / PageSize;

    9     }

   10 }

Alternatively, you could just return ((TotalCount - 1) / PageSize) + 1, which is equivalent to the formula in on line 8 in the above snippet.

Similarly, in the custom paging example I have the same off-by-one error, but it's in computing the starting index of the last page. In the ProductsDataSource's Selecting event handler there is:

int

LastPageStartRowIndex = (TotalRowCount  / MaximumRows) * MaximumRows;

Change this to:

int

LastPageStartRowIndex = ((TotalRowCount - 1) / MaximumRows) * MaximumRows;

Also update this formula in the LastPage Button's Click event handler.

I've submitted the code/article updates for the affected tutorials. It should be updated on the live site within a few days, hopefully.

posted on Tuesday, January 09, 2007 3:35 PM

Feedback

No comments posted yet
Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

My Links

Ads Via DevMavens

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<March 2010>
SMTWTFS
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Comment Stats

DayTotal% of Total
Sunday 2056.8%
Monday 42514.1%
Tuesday 51917.2%
Wednesday 55518.4%
Thursday 58019.2%
Friday 54718.1%
Saturday 1886.2%
Total 3019100.0%

Hour1Total% of Total
12:00 AM 782.6%
1:00 AM 812.7%
2:00 AM 682.3%
3:00 AM 822.7%
4:00 AM 692.3%
5:00 AM 1264.2%
6:00 AM 1183.9%
7:00 AM 1816.0%
8:00 AM 1926.4%
9:00 AM 1585.2%
10:00 AM 1886.2%
11:00 AM 1936.4%
12:00 PM 2016.7%
1:00 PM 1846.1%
2:00 PM 1695.6%
3:00 PM 1354.5%
4:00 PM 1153.8%
5:00 PM 1073.5%
6:00 PM 1013.3%
7:00 PM 1073.5%
8:00 PM 923.0%
9:00 PM 882.9%
10:00 PM 913.0%
11:00 PM 953.1%
Total 3019100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 4.97159
Monday 4.80384
Tuesday 4.04477
Wednesday 7.39680
Thursday 6.26676
Friday 5.07466
Saturday 4.78177
Total 5.403019

Hour1 Entry MadeAvg.Total
12:00 AM 5.2937
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 3.8550
8:00 AM 3.72134
9:00 AM 6.06297
10:00 AM 5.63276
11:00 AM 4.22194
12:00 PM 6.16351
1:00 PM 3.09133
2:00 PM 4.89230
3:00 PM 7.64321
4:00 PM 4.00108
5:00 PM 6.07170
6:00 PM 4.64116
7:00 PM 8.95188
8:00 PM 8.63164
9:00 PM 5.00115
10:00 PM 6.31101
11:00 PM 4.5732
Total 5.403019

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles