Hi,
I am using telerik radgrid. The radgrid performance is worst in following scenarios. Please let me know if there is any other way to improve the performance.
1. I have radgrid with PagerStyle Mode="NextPrevAndNumeric" option, In dropdown i implemented "viewall" option to show all rows in a grid. When i selected view all option the radgrid performance is very slow in both IE6, IE7 and Firefox. Even its getting stuck (See the attached image) in both browsers. I am showing around 6000 records in radgrid. Its taking around 30sec - 40sec to show the all rows in a grid and the grid is very slow for swapping, filtering, sorting and even for scrolling down.
2. I have GridClientSelectColumn in my radgrid. When I am showing all rows in a grid and when I am trying to select all rows in a grid using check box column its getting very slow in IE7(around 6 - 7 sec to select all rows) But in Firefox it is better( 2 sec).
Is there any better way to improve performance of a radgrid. Is there other way to bind the data to the grid when user select "viewall" option?
Please find my attached code.
.ASPX
.CS
I am using telerik radgrid. The radgrid performance is worst in following scenarios. Please let me know if there is any other way to improve the performance.
1. I have radgrid with PagerStyle Mode="NextPrevAndNumeric" option, In dropdown i implemented "viewall" option to show all rows in a grid. When i selected view all option the radgrid performance is very slow in both IE6, IE7 and Firefox. Even its getting stuck (See the attached image) in both browsers. I am showing around 6000 records in radgrid. Its taking around 30sec - 40sec to show the all rows in a grid and the grid is very slow for swapping, filtering, sorting and even for scrolling down.
2. I have GridClientSelectColumn in my radgrid. When I am showing all rows in a grid and when I am trying to select all rows in a grid using check box column its getting very slow in IE7(around 6 - 7 sec to select all rows) But in Firefox it is better( 2 sec).
Is there any better way to improve performance of a radgrid. Is there other way to bind the data to the grid when user select "viewall" option?
Please find my attached code.
.ASPX
<asp:Content ID="Content1" ContentPlaceHolderID="CSS_ScriptPlaceHolder" runat="Server"> |
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> |
<link href="CSS/Css.css" rel="stylesheet" type="text/css" /> |
<script type="text/javascript"> |
function onAgrtypeOther() { |
if (document.getElementById('tabTskDet_tabAgreInfo_ddlAgreementType').selectedIndex == 4) |
document.getElementById('trAgrTypeOther').style.visibility = 'visible'; |
else |
document.getElementById('trAgrTypeOther').style.visibility = 'hidden'; |
return false; |
} |
function onPertypeOther() { |
if (document.getElementById('tabTskDet_tabPermit_ddlPermitType').selectedIndex == 3) |
document.getElementById('tdPerTypeOther').style.visibility = 'visible'; |
else |
document.getElementById('tdPerTypeOther').style.visibility = 'hidden'; |
return false; |
} |
function onSitetypeOther() { |
if (document.getElementById('tabTskDet_tabGenTskDet_ddlSiteType').selectedIndex == 4) |
document.getElementById('tabTskDet_tabGenTskDet_tdSiteTypeOth').style.visibility = 'visible'; |
else |
document.getElementById('tabTskDet_tabGenTskDet_tdSiteTypeOth').style.visibility = 'hidden'; |
return false; |
} |
function onPwrtypeOther() { |
if (document.getElementById('tabTskDet_tabGenTskDet_ddlPwrStatus').selectedIndex == 4) |
document.getElementById('tabTskDet_tabGenTskDet_tdPwrStatusOth').style.visibility = 'visible'; |
else |
document.getElementById('tabTskDet_tabGenTskDet_tdPwrStatusOth').style.visibility = 'hidden'; |
return false; |
} |
function onEqiLoctypeOther() { |
if (document.getElementById('tabTskDet_tabGenTskDet_ddlEquiLocDesc').selectedIndex == 3) |
document.getElementById('tabTskDet_tabGenTskDet_tdEquiLocDescOth').style.visibility = 'visible'; |
else |
document.getElementById('tabTskDet_tabGenTskDet_tdEquiLocDescOth').style.visibility = 'hidden'; |
return false; |
} |
function showOthRea() { |
var dt1 = new Date(document.getElementById("tabTskDet_tabGenTskDet_txtConstSchCompDate").value); |
var dt2 = new Date(document.getElementById("tabTskDet_tabGenTskDet_txtConstActCompDate").value); |
if (dt1 < dt2) { |
document.getElementById("tabTskDet_tabGenTskDet_tdDtLateRea306").style.display = "block" |
} |
else { |
document.getElementById("tabTskDet_tabGenTskDet_tdDtLateRea306").style.display = "none" |
document.getElementById("tabTskDet_tabGenTskDet_lblDueDtLateRea").value = '' |
} |
} |
function showOthRea303() { |
var dt1 = new Date(document.getElementById("tabTskDet_tabGenTskDet_txtContSchComDt").value); |
var dt2 = new Date(document.getElementById("tabTskDet_tabGenTskDet_txtConstActComDt").value); |
if (dt1 < dt2) { |
document.getElementById("tabTskDet_tabGenTskDet_tdDtLateRea303").style.display = "block" |
} |
else { |
document.getElementById("tabTskDet_tabGenTskDet_tdDtLateRea303").style.display = "none" |
document.getElementById("tabTskDet_tabGenTskDet_lbl303DueDtLateRea").value = '' |
} |
} |
function DisplayDateToday(sender, args) { |
if (sender._selectedDate == null) { |
sender._selectedDate = new Date(); |
} |
} |
function onRequestStart(sender, args) { |
if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToWordButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToPdfButton") >= 0 || |
args.get_eventTarget().indexOf("ExportToCsvButton") >= 0) { |
args.set_enableAjax(false); |
} |
} |
</script> |
<style> |
.modalBackground |
{ |
background-color: Gray; |
filter: alpha(opacity=70); |
opacity: 0.7; |
} |
.AjaxCalendar .ajax__calendar_container |
{ |
border: 1px solid #646464; |
background-color: White; |
color: Black; |
} |
.AjaxCalendar .ajax__calendar_other .ajax__calendar_day, .AjaxCalendar .ajax__calendar_other .ajax__calendar_year |
{ |
color: #999999; |
} |
.AjaxCalendar .ajax__calendar_hover .ajax__calendar_day, .AjaxCalendar .ajax__calendar_hover .ajax__calendar_month, .AjaxCalendar .ajax__calendar_hover .ajax__calendar_year |
{ |
color: Red; |
} |
.AjaxCalendar .ajax__calendar_active .ajax__calendar_day, .AjaxCalendar .ajax__calendar_active .ajax__calendar_month, .AjaxCalendar .ajax__calendar_active .ajax__calendar_year |
{ |
background-color: #78C43C; |
color: Black; |
text-align: center; |
font-weight: bold; |
} |
.rgPageFirst, .rgPagePrev, .rgPageNext, .rgPageLast |
{ |
display: none !important; |
} |
div.RadGrid_Default .rgHeader, div.RadGrid_Default th.rgResizeCol |
{ |
background-image: none; |
} |
</style> |
</telerik:RadCodeBlock> |
</asp:Content> |
<asp:Content ID="Content2" ContentPlaceHolderID="PagePlaceholder" runat="Server"> |
<div style="width: 100%; padding-top: 20px"> |
<table style="width: 98%"> |
<tr> |
<td colspan="2"> |
<asp:Label runat="server" Font-Bold="true" Font-Size="14pt" ID="lblTskName"></asp:Label> |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
</telerik:RadScriptManager> |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
<ClientEvents OnRequestStart="onRequestStart" /> |
<AjaxSettings> |
<telerik:AjaxSetting AjaxControlID="rg209"> |
<UpdatedControls> |
<telerik:AjaxUpdatedControl ControlID="rg209" LoadingPanelID="RadAjaxLoadingPanel1" /> |
</UpdatedControls> |
</telerik:AjaxSetting> |
</AjaxSettings> |
</telerik:RadAjaxManager> |
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default"> |
</telerik:RadAjaxLoadingPanel> |
<telerik:RadGrid ID="rg209" runat="server" AutoGenerateColumns="false" Height="550px" |
OnNeedDataSource="rg209_NeedDataSource" Width="100%" AllowPaging="True" AllowSorting="True" |
AllowMultiRowSelection="True" EnableHeaderContextMenu="true" GridLines="None" |
EnableHeaderContextFilterMenu="true" AllowMultiRowEdit="true" AllowFilteringByColumn="True" |
OnPreRender="rg209_PreRender" OnItemCreated="rg209_ItemCreated" EnableViewState="false"> |
<HeaderStyle Height="20px" BackColor="#004000" Font-Size="8pt" Font-Bold="True" ForeColor="White" |
HorizontalAlign="Center" BorderColor="White" BorderWidth="1px" /> |
<ExportSettings IgnorePaging="true" ExportOnlyData="true"> |
<Pdf AllowModify="false" AllowPrinting="true" PageBottomMargin="" PageFooterMargin="" |
PageHeaderMargin="" PageHeight="11in" PageLeftMargin="" PageRightMargin="" PageTopMargin="" |
PageWidth="14in" /> |
</ExportSettings> |
<MasterTableView DataKeyNames="orderId" CommandItemDisplay="Top" EditMode="InPlace" |
PageSize="10"> |
<CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" |
ShowExportToCsvButton="true" ShowExportToPdfButton="true" ShowAddNewRecordButton="false" /> |
<Columns> |
<telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" HeaderStyle-Width="3%" |
ItemStyle-Width="3%"> |
</telerik:GridClientSelectColumn> |
<telerik:GridBoundColumn UniqueName="sId" HeaderText="sId" DataField="sId" Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="orderId" HeaderText="orderId" DataField="orderId" |
Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Customer Name" HeaderText="Customer Name" DataField="Customer Name" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Market Name" HeaderText="Market Name" DataField="Market Name" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="LOB" HeaderText="LOB" DataField="LOB" ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Headend Name" HeaderText="Headend Name" DataField="Headend Name" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Project Name" HeaderText="Project Name" DataField="Project Name" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Site Name" HeaderText="Site Name" DataField="Site Name" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Task Status" HeaderText="Task Status" DataField="Task Status" |
ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Sch SM Imp Date" HeaderText="Sch SM Imp Date" |
DataField="Sch SM Imp Date" ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Target PTD" HeaderText="Target PTD" DataField="Target PTD"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Actual PTD" HeaderText="Actual PTD" DataField="Actual PTD"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Foc Date" HeaderText="Foc Date" DataField="Foc Date"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn UniqueName="Notification Date" HeaderText="Notification Date" |
DataField="Notification Date"> |
</telerik:GridBoundColumn> |
<telerik:GridCheckBoxColumn UniqueName="Include FOC?" HeaderText="Include FOC?" DataField="Include FOC?"> |
</telerik:GridCheckBoxColumn> |
<telerik:GridCheckBoxColumn UniqueName="Include DLR?" HeaderText="Include DLR?" DataField="Include DLR?"> |
</telerik:GridCheckBoxColumn> |
<telerik:GridEditCommandColumn UniqueName="ECC209"> |
</telerik:GridEditCommandColumn> |
</Columns> |
</MasterTableView> |
<ClientSettings EnableRowHoverStyle="true" ReorderColumnsOnClient="false" AllowDragToGroup="false" |
AllowColumnsReorder="True"> |
<Scrolling AllowScroll="true" EnableVirtualScrollPaging="false" UseStaticHeaders="true" /> |
<Selecting AllowRowSelect="True"></Selecting> |
<Resizing AllowRowResize="true" AllowColumnResize="True" EnableRealTimeResize="True" |
ResizeGridOnColumnResize="False"></Resizing> |
</ClientSettings> |
<PagerStyle Mode="NextPrevAndNumeric" AlwaysVisible="true"></PagerStyle> |
</telerik:RadGrid> |
</td> |
</tr> |
<tr> |
<td colspan="2"> |
|
</td> |
</tr> |
</table> |
</div> |
</asp:Content> |
.CS
public partial class Tak209 : System.Web.UI.Page |
{ |
protected void Page_Load(object sender, EventArgs e) |
{ |
try |
{ |
if (!IsPostBack) |
{ |
Session["SearchRes"] = null; |
if (Session["TaskName"] != null) |
lblTskName.Text = Session["TaskName"].ToString(); |
Session["FilColms"] = null; |
Session["SortExp"] = null; |
Session["FilExp"] = null; |
Session["ViewAll"] = null; |
BindGrid(); |
} |
} |
catch (Exception ex) |
{ |
throw ex; |
} |
} |
private void BindGrid() |
{ |
try |
{ |
DataSet dsResult = new DataSet(); |
clsSearch_BL clsObj = new clsSearch_BL(); |
clsObj.TaskID = (string)Session["TaskID"]; |
clsObj.CustName = (string)Session["CustName"]; |
clsObj.MarketName = (string)Session["MarketName"]; |
clsObj.HeadendName = (string)Session["HeadendName"]; |
clsObj.SiteName = (string)Session["SiteName"]; |
clsObj.TaskStatus = (string)Session["TaskStatus"]; |
clsObj.OrdType = (string)Session["OrdType"]; |
clsObj.OrdStatus = (string)Session["OrdStatus"]; |
clsObj.ProName = (string)Session["ProName"]; |
clsObj.LOC = (string)Session["LOC"]; |
clsObj.QuoteID = (string)Session["QuoteID"]; |
clsObj.CMNumber = (string)Session["CMNumber"]; |
if (Session["SearchRes"] == null) |
{ |
dsResult = clsObj.getSearchResults_BL(clsObj); |
Session["SearchRes"] = dsResult; |
} |
else |
dsResult = (DataSet)Session["SearchRes"]; |
DataView dataView = dsResult.Tables[0].DefaultView; |
rg209.DataSource = dsResult; |
//rg209.DataBind(); |
} |
catch (Exception ex) |
{ |
throw ex; |
} |
} |
protected void rg209_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) |
{ |
BindGrid(); |
} |
protected void rg209_PreRender(object sender, EventArgs e) |
{ |
rg209.MasterTableView.GetColumnSafe("RowIndicator").Display = false; |
} |
protected void rg209_ItemCreated(object sender, GridItemEventArgs e) |
{ |
if (e.Item is GridPagerItem) |
{ |
RadComboBox combo = (e.Item as GridPagerItem).FindControl("PageSizeComboBox") as RadComboBox; |
// The number of items shown when all is selected |
int allRowsCount = int.MaxValue; |
// Remove duplicates |
RadComboBoxItem duplicate = combo.Items.FindItemByValue(allRowsCount.ToString()); |
if (duplicate != null) |
{ |
duplicate.Remove(); |
} |
// Create a new item for showing all |
RadComboBoxItem item = new RadComboBoxItem("All", allRowsCount.ToString()); |
item.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID); |
combo.Items.Add(item); |
// Set the current pagesize as the selected value |
combo.Items.FindItemByValue(rg209.PageSize.ToString()).Selected = true; |
} |
} |
} |