I customized the page sized in paging drop down in code behind.
when the user change the paging size to 100 (or lower) it's working.
but when user change the paging size to 200 (or higher) and then try to press on next or different page size nothing happen. the big page size cause the paging mechanism to stuck until i refresh the page.
partial code:
grid.aspx.cs
protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
//change paging combo value
if (e.Item is GridPagerItem)
{
var dropDown = (RadComboBox)e.Item.FindControl("PageSizeComboBox");
var totalCount = ((GridPagerItem)e.Item).Paging.DataSourceCount;
var sizes = new Dictionary<string, string>()
{
{"10", "10"},
{"20", "20"},
{"50", "50"}
};
if (totalCount > 100)
{
sizes.Add("100", "100");
}
if (totalCount > 200)
{
sizes.Add("200", "200");
}
if (totalCount > 500)
{
sizes.Add("500", "500");
}
dropDown.Items.Clear();
foreach (var size in sizes)
{
var cboItem = new RadComboBoxItem() { Text = size.Key, Value = size.Value };
cboItem.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID);
dropDown.Items.Add(cboItem);
}
dropDown.FindItemByValue(e.Item.OwnerTableView.PageSize.ToString()).Selected = true;
}
}
grid.aspx
<telerik:RadGrid ID="RadGrid1" runat="server"
AllowSorting="false"
MasterTableView-AllowMultiColumnSorting="true"
AutoGenerateColumns="False" GridLines="None"
AllowPaging="true" PageSize="50"
Width="100%"
OnNeedDataSource="RadGrid1_NeedDataSource"
CellSpacing="0"
OnItemDataBound="RadGrid1_ItemDataBound"
OnPageIndexChanged="RadGrid1_PageIndexChanged"
OnPreRender="RadGrid1_PreRender"
OnItemCreated ="RadGrid1_ItemCreated"
>
<MasterTableView CommandItemDisplay="Top"
DataKeyNames="CycleCountDetailID, CycleCountID, ProductID"
ClientDataKeyNames="CycleCountDetailID, CycleCountID, ProductID"
>
<PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric" />
when the user change the paging size to 100 (or lower) it's working.
but when user change the paging size to 200 (or higher) and then try to press on next or different page size nothing happen. the big page size cause the paging mechanism to stuck until i refresh the page.
partial code:
grid.aspx.cs
protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
//change paging combo value
if (e.Item is GridPagerItem)
{
var dropDown = (RadComboBox)e.Item.FindControl("PageSizeComboBox");
var totalCount = ((GridPagerItem)e.Item).Paging.DataSourceCount;
var sizes = new Dictionary<string, string>()
{
{"10", "10"},
{"20", "20"},
{"50", "50"}
};
if (totalCount > 100)
{
sizes.Add("100", "100");
}
if (totalCount > 200)
{
sizes.Add("200", "200");
}
if (totalCount > 500)
{
sizes.Add("500", "500");
}
dropDown.Items.Clear();
foreach (var size in sizes)
{
var cboItem = new RadComboBoxItem() { Text = size.Key, Value = size.Value };
cboItem.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID);
dropDown.Items.Add(cboItem);
}
dropDown.FindItemByValue(e.Item.OwnerTableView.PageSize.ToString()).Selected = true;
}
}
grid.aspx
<telerik:RadGrid ID="RadGrid1" runat="server"
AllowSorting="false"
MasterTableView-AllowMultiColumnSorting="true"
AutoGenerateColumns="False" GridLines="None"
AllowPaging="true" PageSize="50"
Width="100%"
OnNeedDataSource="RadGrid1_NeedDataSource"
CellSpacing="0"
OnItemDataBound="RadGrid1_ItemDataBound"
OnPageIndexChanged="RadGrid1_PageIndexChanged"
OnPreRender="RadGrid1_PreRender"
OnItemCreated ="RadGrid1_ItemCreated"
>
<MasterTableView CommandItemDisplay="Top"
DataKeyNames="CycleCountDetailID, CycleCountID, ProductID"
ClientDataKeyNames="CycleCountDetailID, CycleCountID, ProductID"
>
<PagerStyle AlwaysVisible="true" Mode="NextPrevAndNumeric" />
9 Answers, 1 is accepted
0
Princy
Top achievements
Rank 2
answered on 13 May 2014, 06:45 AM
Hi Lina,
I was not able to replicate such an issue at my end. Please take a look at the sample code snippet which works as expected.
ASPX:
C#:
Thanks,
Princy
I was not able to replicate such an issue at my end. Please take a look at the sample code snippet which works as expected.
ASPX:
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
>
</
asp:ScriptManager
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"false"
DataSourceID
=
"SqlDataSource1"
AllowPaging
=
"true"
AutoGenerateEditColumn
=
"true"
AllowSorting
=
"true"
OnItemCreated
=
"RadGrid1_ItemCreated"
>
<
MasterTableView
DataKeyNames
=
"OrderID"
>
<
PagerStyle
AlwaysVisible
=
"true"
Mode
=
"NextPrevAndNumeric"
/>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"OrderID"
DataField
=
"OrderID"
HeaderText
=
"OrderID"
/>
<
telerik:GridBoundColumn
DataField
=
"ShipCity"
HeaderText
=
"ShipCity"
UniqueName
=
"ShipCity"
/>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"SqlDataSource1"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Orders]"></
asp:SqlDataSource
>
C#:
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridPagerItem)
{
var dropDown = (RadComboBox)e.Item.FindControl(
"PageSizeComboBox"
);
var totalCount = ((GridPagerItem)e.Item).Paging.DataSourceCount;
var sizes =
new
Dictionary<
string
,
string
>() {
{
"10"
,
"10"
},
{
"20"
,
"20"
},
{
"50"
,
"50"
}
};
if
(totalCount > 100)
{
sizes.Add(
"100"
,
"100"
);
}
if
(totalCount > 200)
{
sizes.Add(
"200"
,
"200"
);
}
if
(totalCount > 500)
{
sizes.Add(
"500"
,
"500"
);
}
sizes.Add(
"All"
, totalCount.ToString());
dropDown.Items.Clear();
foreach
(var size
in
sizes)
{
var cboItem =
new
RadComboBoxItem() { Text = size.Key, Value = size.Value };
cboItem.Attributes.Add(
"ownerTableViewId"
, e.Item.OwnerTableView.ClientID);
dropDown.Items.Add(cboItem);
}
dropDown.FindItemByValue(e.Item.OwnerTableView.PageSize.ToString()).Selected =
true
;
}
}
Thanks,
Princy
0
Lina
Top achievements
Rank 1
answered on 13 May 2014, 07:25 AM
Princy, you are working with DataSourceID and i update on OnNeedDataSource. there are slight changes in logic and data content (i have more fields of types labels, RadTextBox, RadNumericTextBox and GridBoundColumn)
i can't change to work with DataSourceID because i'm working with session to update the editable fields in grid.
after OnPreRender it takes 9 minutes for the page to load. can this cause the problem? and why is it take so long to render the page?
i can't change to work with DataSourceID because i'm working with session to update the editable fields in grid.
after OnPreRender it takes 9 minutes for the page to load. can this cause the problem? and why is it take so long to render the page?
0
Lina
Top achievements
Rank 1
answered on 13 May 2014, 08:23 AM
is seems the problem is related to the RadTextBox
in your code, try to add 2 RadTextBox under Columns and see the paging isn't working propertly
<telerik:GridTemplateColumn DataField="OrderID" DataType="System.String" HeaderText="OrderID" Groupable="False" SortExpression="OrderID">
<ItemTemplate>
<telerik:RadTextBox ID="OrderID1" runat="server" Width="100px"
Text='<%# Bind("OrderID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="OrderID" DataType="System.String" HeaderText="OrderID" Groupable="False" SortExpression="OrderID">
<ItemTemplate>
<telerik:RadTextBox ID="OrderID2" runat="server" Width="100px"
Text='<%# Bind("OrderID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridTemplateColumn>
in your code, try to add 2 RadTextBox under Columns and see the paging isn't working propertly
<telerik:GridTemplateColumn DataField="OrderID" DataType="System.String" HeaderText="OrderID" Groupable="False" SortExpression="OrderID">
<ItemTemplate>
<telerik:RadTextBox ID="OrderID1" runat="server" Width="100px"
Text='<%# Bind("OrderID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="OrderID" DataType="System.String" HeaderText="OrderID" Groupable="False" SortExpression="OrderID">
<ItemTemplate>
<telerik:RadTextBox ID="OrderID2" runat="server" Width="100px"
Text='<%# Bind("OrderID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" Width="100px" />
<ItemStyle HorizontalAlign="Center" Width="100px" />
</telerik:GridTemplateColumn>
0
Princy
Top achievements
Rank 2
answered on 14 May 2014, 05:55 AM
Hi Lina,
Such an issue is not expected. You can take a look at the following sample code snippet. Also please have a look at the articles under Performance mentioned here to know more about grid performance optimizations.
ASPX:
C#:
Thanks,
Princy
Such an issue is not expected. You can take a look at the following sample code snippet. Also please have a look at the articles under Performance mentioned here to know more about grid performance optimizations.
ASPX:
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
</
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"WebBlue"
>
</
telerik:RadAjaxLoadingPanel
>
<
telerik:RadGrid
ID
=
"RadGrid1"
AllowPaging
=
"True"
runat
=
"server"
AllowSorting
=
"true"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AutoGenerateColumns
=
"false"
OnItemCreated
=
"RadGrid1_ItemCreated"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"OrderID"
DataField
=
"OrderID"
HeaderText
=
"OrderID"
/>
<
telerik:GridBoundColumn
DataField
=
"ShipCity"
HeaderText
=
"ShipCity"
UniqueName
=
"ShipCity"
/>
<
telerik:GridTemplateColumn
DataField
=
"CustomerID"
DataType
=
"System.String"
HeaderText
=
"CustomerID"
SortExpression
=
"CustomerID"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"radtxtCustomerID"
runat
=
"server"
Width
=
"100px"
Text='<%# Bind("CustomerID") %>'>
</
telerik:RadTextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
DataField
=
"Freight"
HeaderText
=
"Freight"
SortExpression
=
"Freight"
>
<
ItemTemplate
>
<
telerik:RadTextBox
ID
=
"radtxtFreight"
runat
=
"server"
Text='<%# Bind("Freight") %>'>
</
telerik:RadTextBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
C#:
protected
void
RadGrid1_NeedDataSource(
object
source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = GetDataTable(
"SELECT * FROM Orders"
);
}
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridPagerItem)
{
var dropDown = (RadComboBox)e.Item.FindControl(
"PageSizeComboBox"
);
var totalCount = ((GridPagerItem)e.Item).Paging.DataSourceCount;
var sizes =
new
Dictionary<
string
,
string
>() {
{
"10"
,
"10"
},
{
"20"
,
"20"
},
{
"50"
,
"50"
}
};
if
(totalCount > 100)
{
sizes.Add(
"100"
,
"100"
);
}
if
(totalCount > 200)
{
sizes.Add(
"200"
,
"200"
);
}
if
(totalCount > 500)
{
sizes.Add(
"500"
,
"500"
);
}
sizes.Add(
"All"
, totalCount.ToString());
dropDown.Items.Clear();
foreach
(var size
in
sizes)
{
var cboItem =
new
RadComboBoxItem() { Text = size.Key, Value = size.Value };
cboItem.Attributes.Add(
"ownerTableViewId"
, e.Item.OwnerTableView.ClientID);
dropDown.Items.Add(cboItem);
}
dropDown.FindItemByValue(e.Item.OwnerTableView.PageSize.ToString()).Selected =
true
;
}
}
public
DataTable GetDataTable(
string
query)
{
String ConnString = ConfigurationManager.ConnectionStrings[
"ConnectionString"
].ConnectionString;
SqlConnection conn =
new
SqlConnection(ConnString);
SqlDataAdapter adapter =
new
SqlDataAdapter();
adapter.SelectCommand =
new
SqlCommand(query, conn);
DataTable myDataTable =
new
DataTable();
conn.Open();
try
{
adapter.Fill(myDataTable);
}
finally
{
conn.Close();
}
return
myDataTable;
}
Thanks,
Princy
0
Lina
Top achievements
Rank 1
answered on 16 May 2014, 11:20 AM
Hi Prince
i took your exact sample above ( i created Orders table for this sample with 600 items). in the sample i have problem with paging 500 items. after changing page size to 500 i can't change paging size back to 50 for example, the paging disappear.
don't you have the same problem?
i took your exact sample above ( i created Orders table for this sample with 600 items). in the sample i have problem with paging 500 items. after changing page size to 500 i can't change paging size back to 50 for example, the paging disappear.
don't you have the same problem?
0
Princy
Top achievements
Rank 2
answered on 16 May 2014, 12:01 PM
Hi Lina,
I guess that when you have the PageSize set to the total count of rows, the Pager disappears. You can set the AlwaysVisible="true" property for the PagerStyle.
ASPX:
Thanks,
Princy
I guess that when you have the PageSize set to the total count of rows, the Pager disappears. You can set the AlwaysVisible="true" property for the PagerStyle.
ASPX:
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
>
<
PagerStyle AlwaysVisible
=
"
true
"
/>
<
MasterTableView
>
Thanks,
Princy
0
Lina
Top achievements
Rank 1
answered on 16 May 2014, 12:26 PM
now i have the page, when i try to change from 500 to 10 it doesn't work. next page doesn't work as well.
0
Lina
Top achievements
Rank 1
answered on 16 May 2014, 05:29 PM
if i add more RadTextBox to your example, it stop working with 100 items in page:
<telerik:RadAjaxManager ID="RadAjaxManager2" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server" Skin="WebBlue">
</telerik:RadAjaxLoadingPanel>
<telerik:RadGrid ID="RadGrid1" AllowPaging="True" runat="server" AllowSorting="true" OnNeedDataSource="RadGrid1_NeedDataSource" AutoGenerateColumns="false" OnItemCreated="RadGrid1_ItemCreated">
<PagerStyle AlwaysVisible="true" />
<MasterTableView>
<Columns>
<telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID" />
<telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" />
<telerik:GridTemplateColumn DataField="CustomerID" DataType="System.String" HeaderText="CustomerID" SortExpression="CustomerID">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtCustomerID" runat="server" Width="100px" Text='<%# Bind("CustomerID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight2" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight2" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight3" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight3" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight4" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight4" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<telerik:RadAjaxManager ID="RadAjaxManager2" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server" Skin="WebBlue">
</telerik:RadAjaxLoadingPanel>
<telerik:RadGrid ID="RadGrid1" AllowPaging="True" runat="server" AllowSorting="true" OnNeedDataSource="RadGrid1_NeedDataSource" AutoGenerateColumns="false" OnItemCreated="RadGrid1_ItemCreated">
<PagerStyle AlwaysVisible="true" />
<MasterTableView>
<Columns>
<telerik:GridBoundColumn UniqueName="OrderID" DataField="OrderID" HeaderText="OrderID" />
<telerik:GridBoundColumn DataField="ShipCity" HeaderText="ShipCity" UniqueName="ShipCity" />
<telerik:GridTemplateColumn DataField="CustomerID" DataType="System.String" HeaderText="CustomerID" SortExpression="CustomerID">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtCustomerID" runat="server" Width="100px" Text='<%# Bind("CustomerID") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight2" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight2" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight3" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight3" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Freight" HeaderText="Freight4" SortExpression="Freight">
<ItemTemplate>
<telerik:RadTextBox ID="radtxtFreight4" runat="server" Text='<%# Bind("Freight") %>'>
</telerik:RadTextBox>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
0
Accepted
Princy
Top achievements
Rank 2
answered on 17 May 2014, 03:47 AM
Hi Lina,
I guess you have a large number of columns to be displayed, hence when the pagesize is set to a higher number it takes time to load. You can check the following articles which will help you to increase the performance of the grid.
Client/server grid performance optimizations
Optimizing Performance
Optimizing ViewState usage
Thanks,
Princy
I guess you have a large number of columns to be displayed, hence when the pagesize is set to a higher number it takes time to load. You can check the following articles which will help you to increase the performance of the grid.
Client/server grid performance optimizations
Optimizing Performance
Optimizing ViewState usage
Thanks,
Princy