I'm building a module for DNN Pro 5.6.1 using the built in Telerik (version 2010.1.309.35) controls. The intention of the app is to filter a List(of T) using the radFilter control. I have the mechanics worked out and everything is working as designed. I'm building the list of filtered columns dynamically in the page_init method.
With each click on the control, whether to add or remove filter conditions or to change the filter in any way the control gets progressively slower. At first the control completes it's postback in less than one second. After twenty clicks, the control takes about three seconds to return for each click.
Has anyone else experienced this behavior? Are there methods I could use to reduce the number of postbacks, reduce the amount of data going back and forth to the server, or in any other way improve the performance?
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Try BindFilterAttributes() Catch ex As Exception ProcessModuleLoadException(Me, ex) End TryEnd SubPrivate Sub BindFilterAttributes() For Each thisFieldEditor As RadFilterDataFieldEditor In Me.FieldEditors rflFilter.FieldEditors.Add(thisFieldEditor) NextEnd SubWith each click on the control, whether to add or remove filter conditions or to change the filter in any way the control gets progressively slower. At first the control completes it's postback in less than one second. After twenty clicks, the control takes about three seconds to return for each click.
Has anyone else experienced this behavior? Are there methods I could use to reduce the number of postbacks, reduce the amount of data going back and forth to the server, or in any other way improve the performance?
10 Answers, 1 is accepted
0
Michael
Top achievements
Rank 1
answered on 14 Feb 2011, 11:51 PM
I've continued to experiment to try to find the cause of the deteriorating performance. I've tried four things and learned two.
- Changed the Ajax solution for the control from an radAjaxPanel to radAjaxManager with no effect.
- Commented out the code behind and built 32 FieldEditors of different types in the markup. This removed the performance deterioration entirely
- Changed back to the dynamic population scheme and changed the code to read:
There was no change in the behavior (performace still deteriorated to 3 second for the 21st click).
PrivateSubBindFilterAttributes()rflFilter.FieldEditors.Clear()ForEachthisFieldEditorAsRadFilterDataFieldEditorInMe.FieldEditorsrflFilter.FieldEditors.Add(thisFieldEditor)NextEndSub - Changed the code again, this time to limit the number of FieldEditors added to the filter:
This reduced the impact to performance, but there was still a cumulative effect for each click on the control.
PrivateSubBindFilterAttributes()DimthingyAsInteger= 0ForEachthisFieldEditorAsRadFilterDataFieldEditorInMe.FieldEditorsIfthingy < 5ThenrflFilter.FieldEditors.Add(thisFieldEditor)thingy += 1ElseExitForEndIfNextEndSub
Any ideas at all would be most welcome.
0
Hello Michael,
How are the FieldEditors created before you add them to the FieldEditors collection of RadFilter? The general approach to create editors on Page_Init would be like:
All the best,
Tsvetina
the Telerik team
How are the FieldEditors created before you add them to the FieldEditors collection of RadFilter? The general approach to create editors on Page_Init would be like:
Dim editor As New RadFilterTextFieldEditor() editor.FieldName = "Field1"editor.DataType = GetType(Integer) RadFilter1.FieldEditors.Add(editor)All the best,
Tsvetina
the Telerik team
0
Michael
Top achievements
Rank 1
answered on 18 Feb 2011, 04:12 PM
Thank you for your response. That is essentially what I'm doing. In whole, I First check to see if my lst of FieldEditors has already been created and stored in the server cache. If not, I loop through the fields available for filtering, create the appropriate FieldEditor object for the given data type, give the FieldEditor a name and add it to the list.
I have created a sample project that reproduces the behavior. I would be happy to share that with you.
I have created a sample project that reproduces the behavior. I would be happy to share that with you.
Private ReadOnly Property FieldEditors() As RadFilterDataFieldEditorCollection Get If GetCache("shl_FieldEditors") Is Nothing Then Dim objList As New ListController Dim thisDataTypeList As ListEntryInfoCollection = objList.GetListEntryInfoCollection("DataType") Dim thisFieldEditor As RadFilterDataFieldEditor = Nothing Dim thisFieldEditorCollection As New RadFilterDataFieldEditorCollection(rflFilter) For Each thisAttribute As ProfilePropertyDefinition In Me.InterestingProfileProperties Dim tempAttribute As ProfilePropertyDefinition = thisAttribute If Not tempAttribute.PropertyCategory.EndsWith("_NS") Then If Not rflFilter.FieldEditors.Any(Function(_thisAttribute As RadFilterDataFieldEditor) _thisAttribute.FieldName = tempAttribute.PropertyName) Then For Each thisDataType As ListEntryInfo In thisDataTypeList thisFieldEditor = Nothing If thisAttribute.DataType = thisDataType.EntryID Then Select Case thisDataType.Value Case "Date" thisFieldEditor = New RadFilterDateFieldEditor Case "Text", "Region" thisFieldEditor = New RadFilterTextFieldEditor Case "Integer" thisFieldEditor = New RadFilterNumericFieldEditor thisFieldEditor.DataType = GetType(System.Double) Case "TrueFalse" thisFieldEditor = New RadFilterBooleanFieldEditor End Select Exit For End If Next If Not thisFieldEditor Is Nothing Then thisFieldEditor.FieldName = thisAttribute.PropertyName thisFieldEditorCollection.Add(thisFieldEditor) End If End If End If Next SetCache("shl_FieldEditors", thisFieldEditorCollection, DateTime.Now.AddHours(72)) End If Return CType(GetCache("shl_FieldEditors"), RadFilterDataFieldEditorCollection) End GetEnd Property0
Hello Michael,
Where is this property called? Can you send the whole page code so we can test it?
Greetings,
Iana
the Telerik team
Where is this property called? Can you send the whole page code so we can test it?
Greetings,
Iana
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
0
Michael
Top achievements
Rank 1
answered on 25 Feb 2011, 03:25 AM
Thank you very much for your help on this! Here is both the markup and the code behind of the test module I created as an example of this behavior.
The commented section at the bottom of this clip is the markup I used as a test. It's only there for reference.
This is the entire code behind for the page, including methods that have no bearing on this issue.
Please let me know if there is any addition information I can offer that would be of use to you. Again, thank you very much for your help.
The commented section at the bottom of this clip is the markup I used as a test. It's only there for reference.
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="radFilterTest.ascx.vb" Inherits="SHL.Modules.radFilterTest.radFilterTest" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function pageLoad() { var filter = $find("<%=rflFilter.ClientID %>"); var someStupidShit = filter.get_contextMenu(); filter.get_contextMenu().add_showing(function(sender, args) { var currentExpandedItem = sender.get_attributes()._data.ItemHierarchyIndex; var fieldName = filter._expressionItems[currentExpandedItem]; var allFields = filter._dataFields; var dataType = null; for (var i = 0, j = allFields.length; i < j; i++) { if (allFields[i].FieldName == fieldName) { dataType = allFields[i].DataType; break; } } switch (dataType) { case "System.Double": sender.findItemByValue("EqualTo").set_text("Equals"); sender.findItemByValue("NotEqualTo").set_text("Does Not Equal"); sender.findItemByValue("Between").set_text("Is Between"); sender.findItemByValue("NotBetween").set_visible(false); sender.findItemByValue("GreaterThan").set_text("Is More Than"); sender.findItemByValue("LessThan").set_text("Is Less Than"); sender.findItemByValue("GreaterThanOrEqualTo").set_visible(false); sender.findItemByValue("LessThanOrEqualTo").set_visible(false); sender.findItemByValue("IsNull").set_text("Is Empty"); sender.findItemByValue("NotIsNull").set_visible(false); break; case "System.Boolean": sender.findItemByValue("EqualTo").set_text("Equals"); sender.findItemByValue("IsNull").set_text("Is Empty"); sender.findItemByValue("NotIsNull").set_text("Is Not Empty"); break; case "System.String": sender.findItemByValue("DoesNotContain").set_visible(false); sender.findItemByValue("StartsWith").set_text("Starts With"); sender.findItemByValue("EndsWith").set_visible(false); sender.findItemByValue("EqualTo").set_text("Equals"); sender.findItemByValue("NotEqualTo").set_visible(false); sender.findItemByValue("GreaterThan").set_visible(false); sender.findItemByValue("LessThan").set_visible(false); sender.findItemByValue("GreaterThanOrEqualTo").set_visible(false); sender.findItemByValue("LessThanOrEqualTo").set_visible(false); sender.findItemByValue("Between").set_visible(false); sender.findItemByValue("NotBetween").set_visible(false); sender.findItemByValue("IsEmpty").set_text("Is Empty"); sender.findItemByValue("NotIsEmpty").set_visible(false); sender.findItemByValue("IsNull").set_visible(false); sender.findItemByValue("NotIsNull").set_visible(false); break; case "System.DateTime": sender.findItemByValue("EqualTo").set_text("Equals"); sender.findItemByValue("NotEqualTo").set_text("Does Not Equal"); sender.findItemByValue("GreaterThan").set_text("Is After"); sender.findItemByValue("LessThan").set_text("Is Before"); sender.findItemByValue("GreaterThanOrEqualTo").set_visible(false); sender.findItemByValue("LessThanOrEqualTo").set_visible(false); sender.findItemByValue("Between").set_text("Is Between"); sender.findItemByValue("NotBetween").set_visible(false); sender.findItemByValue("IsNull").set_text("Is Empty"); break; } }); } </script> </telerik:RadCodeBlock> <telerik:RadFilter ID="rflFilter" runat="server"> </telerik:RadFilter> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="rflFilter"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rflFilter" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <!-- <FieldEditors> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 1" FieldName="TextField1" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 1" FieldName="NumericField1" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 1" FieldName="DateField1" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 1" FieldName="BooleanField1" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 2" FieldName="TextField2" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 2" FieldName="NumericField2" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 2" FieldName="DateField2" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 2" FieldName="BooleanField2" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 3" FieldName="TextField3" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 3" FieldName="NumericField3" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 3" FieldName="DateField3" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 3" FieldName="BooleanField3" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 4" FieldName="TextField4" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 4" FieldName="NumericField4" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 4" FieldName="DateField4" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 4" FieldName="BooleanField4" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 5" FieldName="TextField5" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 5" FieldName="NumericField5" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 5" FieldName="DateField5" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 5" FieldName="BooleanField5" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 6" FieldName="TextField6" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 6" FieldName="NumericField6" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 6" FieldName="DateField6" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 6" FieldName="BooleanField6" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 7" FieldName="TextField7" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 7" FieldName="NumericField7" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 7" FieldName="DateField7" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 7" FieldName="BooleanField7" /> <telerik:RadFilterTextFieldEditor DataType="System.String" DisplayName="Text Field 8" FieldName="TextField8" /> <telerik:RadFilterNumericFieldEditor DataType="System.Int16" DisplayName="Numeric Field 8" FieldName="NumericField8" /> <telerik:RadFilterDateFieldEditor DataType="System.DateTime" DisplayName="Date Field 8" FieldName="DateField8" /> <telerik:RadFilterBooleanFieldEditor DisplayName="Boolean Field 8" FieldName="BooleanField8" /> </FieldEditors> -->This is the entire code behind for the page, including methods that have no bearing on this issue.
Imports DotNetNuke Imports DotNetNuke.Services.Exceptions Imports DotNetNuke.Services.Localization Imports DotNetNuke.Entities Imports DotNetNuke.Entities.Users Imports DotNetNuke.Entities.Profile Imports DotNetNuke.Common.Utilities Imports DotNetNuke.Common.Lists Imports DotNetNuke.Common.Globals Imports Telerik.Web.UI Namespace SHL.Modules.radFilterTest Partial Public Class radFilterTest Inherits Entities.Modules.PortalModuleBase #Region "Protected Members" Protected ReadOnly Property IsSuperUser() As Boolean Get If PortalSettings.ActiveTab.ParentId = PortalSettings.SuperTabId Then Return True Else Return False End If End Get End Property Protected ReadOnly Property UsersPortalId() As Integer Get Dim intPortalId As Integer = PortalId If IsSuperUser Then intPortalId = Null.NullInteger End If Return intPortalId End Get End Property#End Region #Region "Private Properties " Private ReadOnly Property ProfileProperties() As List(Of ProfilePropertyDefinition) Get If Session("shl_ProfileProperties") Is Nothing Then Dim AllProfileProperties As ProfilePropertyDefinitionCollection Dim tempProfileProperties As New List(Of ProfilePropertyDefinition) AllProfileProperties = ProfileController.GetPropertyDefinitionsByPortal(UsersPortalId, False) For Each profProperty As ProfilePropertyDefinition In AllProfileProperties If profProperty.Visible Then tempProfileProperties.Add(profProperty) End If Next 'Sort the list by it's ViewOrder property tempProfileProperties.Sort(AddressOf SortProfilePropertyByViewOrder) Session("shl_ProfileProperties") = tempProfileProperties End If Return CType(Session("shl_ProfileProperties"), List(Of ProfilePropertyDefinition)) End Get End Property Private ReadOnly Property FieldEditors() As RadFilterDataFieldEditorCollection Get If Session("shl_FieldEditors") Is Nothing Then Dim objList As New ListController Dim thisDataTypeList As ListEntryInfoCollection = objList.GetListEntryInfoCollection("DataType") Dim thisFieldEditor As RadFilterDataFieldEditor = Nothing Dim thisFieldEditorCollection As New RadFilterDataFieldEditorCollection(rflFilter) For Each thisAttribute As ProfilePropertyDefinition In Me.ProfileProperties Dim tempAttribute As ProfilePropertyDefinition = thisAttribute If Not tempAttribute.PropertyCategory.EndsWith("_NS") Then If Not rflFilter.FieldEditors.Any(Function(_thisAttribute As RadFilterDataFieldEditor) _thisAttribute.FieldName = tempAttribute.PropertyName) Then For Each thisDataType As ListEntryInfo In thisDataTypeList thisFieldEditor = Nothing If thisAttribute.DataType = thisDataType.EntryID Then Select Case thisDataType.Value Case "Date" thisFieldEditor = New RadFilterDateFieldEditor Case "Text", "Region" thisFieldEditor = New RadFilterTextFieldEditor Case "Integer" thisFieldEditor = New RadFilterNumericFieldEditor thisFieldEditor.DataType = GetType(System.Double) Case "TrueFalse" thisFieldEditor = New RadFilterBooleanFieldEditor End Select Exit For End If Next If Not thisFieldEditor Is Nothing Then thisFieldEditor.FieldName = thisAttribute.PropertyName thisFieldEditorCollection.Add(thisFieldEditor) End If End If End If Next Session("shl_FieldEditors") = thisFieldEditorCollection End If Return CType(Session("shl_FieldEditors"), RadFilterDataFieldEditorCollection) End Get End Property#End Region #Region "Event Handlers" Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Try BindFilterAttributes() Catch ex As Exception ProcessModuleLoadException(Me, ex) End Try End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Nothing to see here End Sub Protected Sub rflFilter_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles rflFilter.PreRender Dim menu As RadContextMenu = CType(rflFilter.FindControl("rfContextMenu"), RadContextMenu) menu.DefaultGroupSettings.Height = Unit.Pixel(200) menu.EnableAutoScroll = True SetOperatorButtonVisible(rflFilter.RootGroupItem) End Sub#End Region #Region "Private Methods" Private Sub BindFilterAttributes() For Each thisFieldEditor As RadFilterDataFieldEditor In Me.FieldEditors rflFilter.FieldEditors.Add(thisFieldEditor) Next End Sub Private Function SortProfilePropertyByViewOrder(ByVal x As Object, ByVal y As Object) As Integer Return CInt(CType(x, ProfilePropertyDefinition).ViewOrder < CType(y, ProfilePropertyDefinition).ViewOrder) End Function Public Sub SetOperatorButtonVisible(ByRef GroupItem As RadFilterGroupExpressionItem) For Each oControl In GroupItem.Controls Dim oHyperLink As HyperLink = CType(GetControlOfType(oControl, GetType(HyperLink)), HyperLink) If oHyperLink IsNot Nothing Then If oHyperLink.Text.ToUpper = "AND" Then oHyperLink.Visible = GroupItem.ChildItems.Count > 1 End If End If Dim oLinkButton As LinkButton = CType(GetControlOfType(oControl, GetType(LinkButton)), LinkButton) If oLinkButton IsNot Nothing Then If oLinkButton.Text.ToUpper = "ADD EXPRESSION" Then oLinkButton.Text = "Add Row" oLinkButton.ToolTip = "Add Row" End If End If Next For Each oChildItem In GroupItem.ChildItems If TypeOf (oChildItem) Is RadFilterGroupExpressionItem Then Dim oGroup As RadFilterGroupExpressionItem = CType(oChildItem, RadFilterGroupExpressionItem) SetOperatorButtonVisible(oGroup) End If Next End Sub Public Function GetControlOfType(ByVal ParentControl As Object, ByVal TypeOfControl As Type) As Control Dim oLinkButton As Control = Nothing For Each oSubControl As Control In CType(ParentControl, Control).Controls If oLinkButton Is Nothing Then If oSubControl.GetType Is TypeOfControl Then oLinkButton = oSubControl Else oLinkButton = GetControlOfType(oSubControl, TypeOfControl) End If End If Next Return oLinkButton End Function#End Region End ClassEnd NamespacePlease let me know if there is any addition information I can offer that would be of use to you. Again, thank you very much for your help.
0
Hi Michael,
We were not able to replicate the issue in a standalone aspx page (tried this way since debugging and tracking such issue in DNN is not that easy). Therefore, I am not sure if the problem comes from the dynamic creation of the field editors or from DNN itself. Could you please try to replicate the problem in a regular aspx web form and if you manage, send us the full code that you used?
In the meantime, one other thing that you could try is to create the field editors only on initial Page_Load (with a check if !isPostBack), so that they do not get recreated on each postback.
Kind regards,
Tsvetina
the Telerik team
We were not able to replicate the issue in a standalone aspx page (tried this way since debugging and tracking such issue in DNN is not that easy). Therefore, I am not sure if the problem comes from the dynamic creation of the field editors or from DNN itself. Could you please try to replicate the problem in a regular aspx web form and if you manage, send us the full code that you used?
In the meantime, one other thing that you could try is to create the field editors only on initial Page_Load (with a check if !isPostBack), so that they do not get recreated on each postback.
Kind regards,
Tsvetina
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
0
Michael
Top achievements
Rank 1
answered on 07 Mar 2011, 11:56 PM
Tsvetina,
Thank you for your response. Could you confirm for me that you performed your test using version 2010.1.309.35 of the controls? This is the version that comes with DNN Pro 5.6.1.
Also, since the FieldEditors list is built from a list of ProfileProperties, a DNN specific object, how did you perform the test outside of DNN without rewiting and/or commenting out the majority of my code? May I have a copy of the rewritten code so that I can anylize the differences?
Because my license allows me to build with Telerik controls only for DNN Pro sites, am I allowed to build a test solution outside of DNN? If so, doesn't the amount of reconfiguration necessary to pull the Telerik DLL and it's supporting files (if any) out of DNN to create the test solution almost ensure that I will create more issues that I'm able to resolve by doing so?
Thanks again.
Michael
Thank you for your response. Could you confirm for me that you performed your test using version 2010.1.309.35 of the controls? This is the version that comes with DNN Pro 5.6.1.
Also, since the FieldEditors list is built from a list of ProfileProperties, a DNN specific object, how did you perform the test outside of DNN without rewiting and/or commenting out the majority of my code? May I have a copy of the rewritten code so that I can anylize the differences?
Because my license allows me to build with Telerik controls only for DNN Pro sites, am I allowed to build a test solution outside of DNN? If so, doesn't the amount of reconfiguration necessary to pull the Telerik DLL and it's supporting files (if any) out of DNN to create the test solution almost ensure that I will create more issues that I'm able to resolve by doing so?
Thanks again.
Michael
0
Hello Michael,
I am attaching the project that I used for testing purposes.
The issue that you describe can be replicated only if you remove the line where the FieldEditors are cleared but I see in your code that you also clear them on each postback. Please, review it and let me know if I am missing anything out.
Greetings,
Tsvetina
the Telerik team
I am attaching the project that I used for testing purposes.
The issue that you describe can be replicated only if you remove the line where the FieldEditors are cleared but I see in your code that you also clear them on each postback. Please, review it and let me know if I am missing anything out.
Greetings,
Tsvetina
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
0
Michael
Top achievements
Rank 1
answered on 22 Mar 2011, 09:10 PM
Tsvetina,
Thank you again for your help. I used visual studio to open a new website and pointed it to your test project. I then ran the new site in debug and performed the same test I've been using within DNN. I found that the behavior was exactly the same in your project as it was in mine. I clicked the button to add a new filter item ten times, each time waiting until the new row in the filter control was displayed. I then clcked the "X" on each row in the filter control to dismiss it, begining from the top. The control got progessively slower with each click. The first postback (from adding the very first row) took less than one second. The twentieth postback (from removing the very last row) took just shy of three seconds to complete.
Do I understand correctly that you are not experiencing this same behavior?
To address your earlier question about using a check for !isPostBack, I took my guidance from this thread and have found no way to persist the list of field editors across postbacks. If there is a way to use ViewState, Javascript or any other mechanism, I would very much like to learn about it.
Thanks again.
Michael
Thank you again for your help. I used visual studio to open a new website and pointed it to your test project. I then ran the new site in debug and performed the same test I've been using within DNN. I found that the behavior was exactly the same in your project as it was in mine. I clicked the button to add a new filter item ten times, each time waiting until the new row in the filter control was displayed. I then clcked the "X" on each row in the filter control to dismiss it, begining from the top. The control got progessively slower with each click. The first postback (from adding the very first row) took less than one second. The twentieth postback (from removing the very last row) took just shy of three seconds to complete.
Do I understand correctly that you are not experiencing this same behavior?
To address your earlier question about using a check for !isPostBack, I took my guidance from this thread and have found no way to persist the list of field editors across postbacks. If there is a way to use ViewState, Javascript or any other mechanism, I would very much like to learn about it.
Thanks again.
Michael
0
Hi Michael,
I made a video of how the performance stays one and the same on my side while performing the steps listed by you. Could you take a look at the video and let me know if you are doing anything different?
http://screencast.com/t/GU1cXdQijUHT
All the best,
Tsvetina
the Telerik team
I made a video of how the performance stays one and the same on my side while performing the steps listed by you. Could you take a look at the video and let me know if you are doing anything different?
http://screencast.com/t/GU1cXdQijUHT
All the best,
Tsvetina
the Telerik team