Hi,
I am working on a project that have developed by previous developers. In this project, there is a RadGrid which is used to manage the members. The member details are fetched from the database using a stored procedure and is binding it to the RadGrid. When the number of members is large, it takes a very long time to load the grid. I have checked the code and found that the ItemDatabound event of the grid creates the problem. There are some checking in this event which required to load the values in the grid. The html part of the grid is :
I am working on a project that have developed by previous developers. In this project, there is a RadGrid which is used to manage the members. The member details are fetched from the database using a stored procedure and is binding it to the RadGrid. When the number of members is large, it takes a very long time to load the grid. I have checked the code and found that the ItemDatabound event of the grid creates the problem. There are some checking in this event which required to load the values in the grid. The html part of the grid is :
<telerik:RadGrid ID="radGvMembers" runat="server" AllowPaging="True" AutoGenerateColumns="false" GridLines="None" OnNeedDataSource="radGvMembers_NeedDataSource" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowSorting="true" AllowFilteringByColumn="True" OnUpdateCommand="radGvMembers_UpdateCommand" OnDeleteCommand="radGvMembers_DeleteCommand" OnInsertCommand="radGvMembers_InsertCommand" OnItemCommand="radGvMembers_ItemCommand" OnItemDataBound="radGvMembers_ItemDataBound" OnPreRender="radGvMembers_PreRender" AllowMultiRowSelection="true" OnPageIndexChanged="radGvMembers_PageIndexChanged" OnGridExporting="radGvMembers_GridExporting" Width="780px" OnSortCommand="radGvMembers_SortCommand"> <GroupingSettings CaseSensitive="false" /> <MasterTableView DataKeyNames="MemberId,IsBounced" CommandItemDisplay="Top" AllowCustomSorting="false" Width="100%"> <ExpandCollapseColumn> <HeaderStyle Width="20px" /> </ExpandCollapseColumn> <CommandItemTemplate> <div> <table width="100%"> <tr> <td align="left"> <asp:LinkButton ID="linkAddButton" runat="server" CommandName="InitInsert">Add New Member</asp:LinkButton> </td> <td align="right"> <asp:LinkButton ID="linkRefresh" runat="server" CommandName="RebindGrid">Refresh</asp:LinkButton> </td> </tr> </table> </div> </CommandItemTemplate> <Columns> <telerik:GridClientSelectColumn DataType="System.Boolean"> </telerik:GridClientSelectColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton" DataType="System.Guid" UniqueName="EditColumn"> </telerik:GridEditCommandColumn> <telerik:GridButtonColumn ButtonType="ImageButton" ConfirmDialogType="RadWindow" ConfirmText="Do you want to delete?" ConfirmTitle="Delete" Text="Delete" CommandArgument="MemberId" CommandName="Delete" UniqueName="DeleteColumn"> </telerik:GridButtonColumn> <telerik:GridTemplateColumn UniqueName="ReinstateMember" AllowFiltering="false"> <ItemTemplate> <asp:ImageButton ID="btnReinstateMember" runat="Server" CommandName="ReInstate" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn UniqueName="Subscribe" AllowFiltering="false" HeaderText="IsSubscribed" SortExpression="IsSubscribed" DataField="IsSubscribed" DataType="System.Boolean"> <ItemTemplate> <asp:CheckBox ID="IsSubscribed" runat="server" Checked='<%#Eval("IsSubscribed")%>' Enabled="false" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="IsBounced" SortExpression="IsBounced" AllowFiltering="false" UniqueName="BounceMember"> <ItemTemplate> <asp:LinkButton ID="btnBounceMember" runat="Server" CommandName="BounceMember" Text="Button" /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <RowIndicatorColumn> <HeaderStyle Width="20px" /> </RowIndicatorColumn> <EditFormSettings> <EditColumn UniqueName="EditCommandColumn1"> </EditColumn> </EditFormSettings> </MasterTableView> <FilterMenu EnableTheming="True"> <CollapseAnimation Duration="200" Type="OutQuint" /> </FilterMenu> <ExportSettings ExportOnlyData="false" OpenInNewWindow="true" IgnorePaging="true"> </ExportSettings> <ClientSettings AllowColumnHide="false"> <Scrolling AllowScroll="True" UseStaticHeaders="True"></Scrolling> <Selecting AllowRowSelect="True" /> </ClientSettings> </telerik:RadGrid>and the code in the ItmeDataBound event is:
protected void radGvMembers_ItemDataBound(object sender, GridItemEventArgs e) { try { if (e.Item is GridDataItem) { ImageButton btnReinstate = ((GridDataItem)e.Item).FindControl("btnReinstateMember") as ImageButton; if (e.Item.Cells[6].Text == "True") { e.Item.Cells[1].Text = String.Empty; e.Item.Cells[2].Text = String.Empty; e.Item.Cells[4].Visible = false; e.Item.Cells[6].Text = string.Empty; e.Item.Cells[3].Enabled = false; btnReinstate.ImageUrl = "~/App_Themes/Default/Grid/undo.jpg"; btnReinstate.OnClientClick = "return radconfirmWindow('Are you sure want to Re-Instate the Member'," + "'" + btnReinstate.UniqueID + "','100','300','Member Management');"; (e.Item as GridDataItem).BackColor = System.Drawing.Color.Gray; } else { e.Item.Cells[6].Visible = false; btnReinstate.Visible = false; } bool BouncedMemberStatus = Convert.ToBoolean(e.Item.OwnerTableView.DataKeyValues[e.Item. ItemIndex]["IsBounced"].ToString()); LinkButton btnBounced = ((GridDataItem)e.Item).FindControl("btnBounceMember") as LinkButton; btnBounced.CommandArgument = BouncedMemberStatus.ToString(); btnBounced.Width = Unit.Pixel(80); //Set Client Script if (BouncedMemberStatus) { btnBounced.Text = "UnBounce"; btnBounced.OnClientClick = "return radconfirmWindow('Are you sure want to UnBounce the Member'," + "'" + btnBounced.UniqueID + "','100','300','Bounce Management');"; } else { btnBounced.Text = "Bounce"; btnBounced.OnClientClick = "return radconfirmWindow('Are you sure want to Bounce the Member'," + "'" + btnBounced.UniqueID + "','100','300','Bounce Management');"; } } else if (e.Item is GridHeaderItem || e.Item is GridFilteringItem || e.Item is GridFooterItem) { e.Item.Cells[6].Visible = false; if (e.Item is GridHeaderItem) { CheckBox chk = ((GridHeaderItem)e.Item).FindControl("headerChkbox") as CheckBox; if (chk != null) { chk.Checked = AreAllMembersSelected; } } } } catch (Exception Excep) { logger.Error("Error Trace on " + System.Reflection.MethodBase.GetCurrentMethod().Name, Excep); Response.Redirect("~/ErrorPages/GenericErrorShow.aspx?msg=" + Excep.Message); } }How can we speed up the execution of the page? Please advice me.