Hello,
I am trying to implement RadListView similar to this ListView - DataGrouping Demo. But I got very strange behaviour on page changes. I've set PageSize="5" in DataPager.
- Page 1: shows (5) items from 1 - 5 (Correct)
- Page 2: shows (10) items from 6 - 15 (Incorrect. Extra 5 items)
- Page 3: shows (15) items from 11 - 25 (Even worse. Extra 5 new items and 5 previous items. 11 to 15 was already shown on page 2)
- Page 4: shows (20) items from 16 - 35 (I've no idea)
- Page 5: shows (20) items from 21 - 40
- Page 6: shows (15) items from 26 - 40 (Reduced 5 items. All duplicated records from previous pages)
- Page 7: shows (10) items from 31 - 40 (Reduced 5 more items. All duplicated records from previous pages)
- Page 8: shows (5) items from 36 - 40 (Reduced 5 more items. All duplicated records from previous pages)
- Page 9: shows (5) items from next group
- Same Pattern ...
I am not sure my markup have problem or my data have. You can see my sample code that will create above result below. I also attached screen shots for faster reference.
Please help and thanks in advanced.
Sample.aspx.cs
protected
void
RadListView1_NeedDataSource(
object
sender, Telerik.Web.UI.RadListViewNeedDataSourceEventArgs e)
{
RadListView1.DataSource = PrepareData();
}
private
DataTable PrepareData()
{
DataTable l_Table =
new
DataTable();
l_Table.Columns.Add(
"ID"
);
l_Table.Columns.Add(
"Code"
);
l_Table.Columns.Add(
"Group"
);
l_Table.Columns.Add(
"PIN"
);
l_Table.Rows.Add(
new
object
[] { 1,
"A10001"
,
"A"
, 8096 });
l_Table.Rows.Add(
new
object
[] { 2,
"A10002"
,
"A"
, 3029 });
l_Table.Rows.Add(
new
object
[] { 3,
"A10003"
,
"A"
, 9427 });
l_Table.Rows.Add(
new
object
[] { 4,
"A10004"
,
"A"
, 8792 });
l_Table.Rows.Add(
new
object
[] { 5,
"A10005"
,
"A"
, 7166 });
l_Table.Rows.Add(
new
object
[] { 6,
"A10006"
,
"A"
, 1002 });
l_Table.Rows.Add(
new
object
[] { 7,
"A10007"
,
"A"
, 4989 });
l_Table.Rows.Add(
new
object
[] { 8,
"A10008"
,
"A"
, 8108 });
l_Table.Rows.Add(
new
object
[] { 9,
"A10009"
,
"A"
, 8547 });
l_Table.Rows.Add(
new
object
[] { 10,
"A10010"
,
"A"
, 3651 });
l_Table.Rows.Add(
new
object
[] { 11,
"A10011"
,
"A"
, 2418 });
l_Table.Rows.Add(
new
object
[] { 12,
"A10012"
,
"A"
, 7482 });
l_Table.Rows.Add(
new
object
[] { 13,
"A10013"
,
"A"
, 2696 });
l_Table.Rows.Add(
new
object
[] { 14,
"A10014"
,
"A"
, 7149 });
l_Table.Rows.Add(
new
object
[] { 15,
"A10015"
,
"A"
, 8167 });
l_Table.Rows.Add(
new
object
[] { 16,
"A10016"
,
"A"
, 1995 });
l_Table.Rows.Add(
new
object
[] { 17,
"A10017"
,
"A"
, 4006 });
l_Table.Rows.Add(
new
object
[] { 18,
"A10018"
,
"A"
, 7834 });
l_Table.Rows.Add(
new
object
[] { 19,
"A10019"
,
"A"
, 6419 });
l_Table.Rows.Add(
new
object
[] { 20,
"A10020"
,
"A"
, 1864 });
l_Table.Rows.Add(
new
object
[] { 21,
"A10021"
,
"A"
, 2777 });
l_Table.Rows.Add(
new
object
[] { 22,
"A10022"
,
"A"
, 7167 });
l_Table.Rows.Add(
new
object
[] { 23,
"A10023"
,
"A"
, 6995 });
l_Table.Rows.Add(
new
object
[] { 24,
"A10024"
,
"A"
, 7136 });
l_Table.Rows.Add(
new
object
[] { 25,
"A10025"
,
"A"
, 2612 });
l_Table.Rows.Add(
new
object
[] { 26,
"A10026"
,
"A"
, 3543 });
l_Table.Rows.Add(
new
object
[] { 27,
"A10027"
,
"A"
, 3262 });
l_Table.Rows.Add(
new
object
[] { 28,
"A10028"
,
"A"
, 5829 });
l_Table.Rows.Add(
new
object
[] { 29,
"A10029"
,
"A"
, 3409 });
l_Table.Rows.Add(
new
object
[] { 30,
"A10030"
,
"A"
, 6428 });
l_Table.Rows.Add(
new
object
[] { 31,
"A10031"
,
"A"
, 2510 });
l_Table.Rows.Add(
new
object
[] { 32,
"A10032"
,
"A"
, 3874 });
l_Table.Rows.Add(
new
object
[] { 33,
"A10033"
,
"A"
, 6840 });
l_Table.Rows.Add(
new
object
[] { 34,
"A10034"
,
"A"
, 8446 });
l_Table.Rows.Add(
new
object
[] { 35,
"A10035"
,
"A"
, 6599 });
l_Table.Rows.Add(
new
object
[] { 36,
"A10036"
,
"A"
, 9215 });
l_Table.Rows.Add(
new
object
[] { 37,
"A10037"
,
"A"
, 8140 });
l_Table.Rows.Add(
new
object
[] { 38,
"A10038"
,
"A"
, 9804 });
l_Table.Rows.Add(
new
object
[] { 39,
"A10039"
,
"A"
, 9179 });
l_Table.Rows.Add(
new
object
[] { 40,
"A10040"
,
"A"
, 7315 });
l_Table.Rows.Add(
new
object
[] { 41,
"B10001"
,
"B"
, 9307 });
l_Table.Rows.Add(
new
object
[] { 42,
"B10002"
,
"B"
, 6832 });
l_Table.Rows.Add(
new
object
[] { 43,
"B10003"
,
"B"
, 2386 });
l_Table.Rows.Add(
new
object
[] { 44,
"B10004"
,
"B"
, 2283 });
l_Table.Rows.Add(
new
object
[] { 45,
"B10005"
,
"B"
, 3295 });
l_Table.Rows.Add(
new
object
[] { 46,
"B10006"
,
"B"
, 6314 });
l_Table.Rows.Add(
new
object
[] { 47,
"B10007"
,
"B"
, 1433 });
l_Table.Rows.Add(
new
object
[] { 48,
"B10008"
,
"B"
, 2250 });
l_Table.Rows.Add(
new
object
[] { 49,
"B10009"
,
"B"
, 1658 });
l_Table.Rows.Add(
new
object
[] { 50,
"B10010"
,
"B"
, 4967 });
l_Table.Rows.Add(
new
object
[] { 51,
"B10011"
,
"B"
, 6391 });
l_Table.Rows.Add(
new
object
[] { 52,
"B10012"
,
"B"
, 6217 });
l_Table.Rows.Add(
new
object
[] { 53,
"B10013"
,
"B"
, 5478 });
l_Table.Rows.Add(
new
object
[] { 54,
"B10014"
,
"B"
, 2037 });
l_Table.Rows.Add(
new
object
[] { 55,
"B10015"
,
"B"
, 3961 });
l_Table.Rows.Add(
new
object
[] { 56,
"B10016"
,
"B"
, 8989 });
l_Table.Rows.Add(
new
object
[] { 81,
"C10001"
,
"C"
, 5405 });
l_Table.Rows.Add(
new
object
[] { 82,
"C10002"
,
"C"
, 9161 });
l_Table.Rows.Add(
new
object
[] { 83,
"C10003"
,
"C"
, 7635 });
l_Table.Rows.Add(
new
object
[] { 84,
"C10004"
,
"C"
, 4567 });
l_Table.Rows.Add(
new
object
[] { 85,
"C10005"
,
"C"
, 1197 });
l_Table.Rows.Add(
new
object
[] { 86,
"C10006"
,
"C"
, 3379 });
l_Table.Rows.Add(
new
object
[] { 87,
"C10007"
,
"C"
, 4782 });
l_Table.Rows.Add(
new
object
[] { 88,
"C10008"
,
"C"
, 5650 });
l_Table.Rows.Add(
new
object
[] { 89,
"C10009"
,
"C"
, 7737 });
l_Table.Rows.Add(
new
object
[] { 90,
"C10010"
,
"C"
, 7174 });
l_Table.Rows.Add(
new
object
[] { 91,
"C10011"
,
"C"
, 8038 });
l_Table.Rows.Add(
new
object
[] { 92,
"C10012"
,
"C"
, 1445 });
l_Table.Rows.Add(
new
object
[] { 93,
"C10013"
,
"C"
, 9798 });
l_Table.Rows.Add(
new
object
[] { 94,
"C10014"
,
"C"
, 6405 });
l_Table.Rows.Add(
new
object
[] { 95,
"C10015"
,
"C"
, 2384 });
l_Table.Rows.Add(
new
object
[] { 96,
"C10016"
,
"C"
, 3403 });
l_Table.Rows.Add(
new
object
[] { 97,
"C10017"
,
"C"
, 6483 });
l_Table.Rows.Add(
new
object
[] { 98,
"C10018"
,
"C"
, 8907 });
l_Table.Rows.Add(
new
object
[] { 99,
"C10019"
,
"C"
, 5507 });
l_Table.Rows.Add(
new
object
[] { 100,
"C10020"
,
"C"
, 4660 });
l_Table.Rows.Add(
new
object
[] { 101,
"C10021"
,
"C"
, 9608 });
l_Table.Rows.Add(
new
object
[] { 102,
"C10022"
,
"C"
, 5091 });
l_Table.Rows.Add(
new
object
[] { 103,
"C10023"
,
"C"
, 7184 });
l_Table.Rows.Add(
new
object
[] { 127,
"D10001"
,
"D"
, 5775 });
l_Table.Rows.Add(
new
object
[] { 128,
"D10002"
,
"D"
, 6340 });
l_Table.Rows.Add(
new
object
[] { 129,
"D10003"
,
"D"
, 1671 });
l_Table.Rows.Add(
new
object
[] { 130,
"D10004"
,
"D"
, 2434 });
l_Table.Rows.Add(
new
object
[] { 131,
"D10005"
,
"D"
, 2740 });
l_Table.Rows.Add(
new
object
[] { 132,
"D10006"
,
"D"
, 5798 });
l_Table.Rows.Add(
new
object
[] { 133,
"D10007"
,
"D"
, 5826 });
l_Table.Rows.Add(
new
object
[] { 134,
"D10008"
,
"D"
, 6959 });
l_Table.Rows.Add(
new
object
[] { 135,
"D10009"
,
"D"
, 2469 });
l_Table.Rows.Add(
new
object
[] { 136,
"D10010"
,
"D"
, 6864 });
l_Table.Rows.Add(
new
object
[] { 137,
"D10011"
,
"D"
, 8379 });
l_Table.Rows.Add(
new
object
[] { 138,
"D10012"
,
"D"
, 8301 });
l_Table.Rows.Add(
new
object
[] { 139,
"D10013"
,
"D"
, 7469 });
l_Table.Rows.Add(
new
object
[] { 140,
"D10014"
,
"D"
, 2079 });
l_Table.Rows.Add(
new
object
[] { 141,
"D10015"
,
"D"
, 5101 });
l_Table.Rows.Add(
new
object
[] { 142,
"D10016"
,
"D"
, 9003 });
l_Table.Rows.Add(
new
object
[] { 143,
"D10017"
,
"D"
, 7630 });
l_Table.Rows.Add(
new
object
[] { 144,
"D10018"
,
"D"
, 4189 });
return
l_Table;
}
Sample.aspx
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel1"
runat
=
"server"
>
<
telerik:RadListView
ID
=
"RadListView1"
runat
=
"server"
ItemPlaceholderID
=
"DataGroupPlaceHolder3"
OnNeedDataSource
=
"RadListView1_NeedDataSource"
AllowPaging
=
"True"
GroupAggregatesScope
=
"AllItems"
DataKeyNames
=
"ID"
>
<
ItemTemplate
>
<
div
style
=
"display: inline-block; background-color: white; padding: 10px; margin: 10px;"
>
<
div
>
<
b
>ID: </
b
>
<%#Eval("ID")%>
</
div
>
<
div
class
=
"category model"
>
<
b
>Code: </
b
>
<%#Eval("Code")%>
</
div
>
<
div
class
=
"category"
>
<
b
>PIN: </
b
>
<%#Eval("PIN")%>
</
div
>
</
div
>
</
ItemTemplate
>
<
LayoutTemplate
>
<
asp:Panel
ID
=
"DataGroupPlaceHolder2"
runat
=
"server"
>
</
asp:Panel
>
<
telerik:RadDataPager
ID
=
"RadDataPager1"
runat
=
"server"
PagedControlID
=
"RadListView1"
Skin
=
"Silk"
PageSize
=
"5"
class
=
"clearfix"
>
<
Fields
>
<
telerik:RadDataPagerButtonField
FieldType
=
"FirstPrev"
FirstButtonText
=
"First"
PrevButtonText
=
"Prev"
></
telerik:RadDataPagerButtonField
>
<
telerik:RadDataPagerButtonField
FieldType
=
"Numeric"
PageButtonCount
=
"10"
></
telerik:RadDataPagerButtonField
>
<
telerik:RadDataPagerButtonField
FieldType
=
"NextLast"
NextButtonText
=
"Next"
LastButtonText
=
"Last"
></
telerik:RadDataPagerButtonField
>
</
Fields
>
</
telerik:RadDataPager
>
</
LayoutTemplate
>
<
GroupSeparatorTemplate
>
</
GroupSeparatorTemplate
>
<
DataGroups
>
<
telerik:ListViewDataGroup
GroupField
=
"Group"
DataGroupPlaceholderID
=
"DataGroupPlaceHolder2"
SortOrder
=
"Ascending"
>
<
DataGroupTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"Panel3"
GroupingText='<%# "Group:<b>" + (Container as RadListViewDataGroupItem).DataGroupKey + "</
b
>"%> '>
<
asp:PlaceHolder
runat
=
"server"
ID
=
"DataGroupPlaceHolder3"
></
asp:PlaceHolder
>
</
asp:Panel
>
</
DataGroupTemplate
>
<
GroupAggregates
>
<
telerik:ListViewDataGroupAggregate
Aggregate
=
"First"
DataField
=
"Group"
/>
</
GroupAggregates
>
</
telerik:ListViewDataGroup
>
</
DataGroups
>
</
telerik:RadListView
>
</
telerik:RadAjaxPanel
>