We have an older application that was using the 2015 version of Telerik.Web.UI control. We use a RadGrid that employs a web user control for adding and editing rows.
<telerik:RadGrid ID="gvSamples" runat="server" AutoGenerateColumns="False" OnUpdateCommand="gvSamples_UpdateCommand" OnItemCommand="gvSamples_ItemCommand" OnDeleteCommand="gvSamples_DeleteCommand" EnableEmbeddedBaseStylesheet="false" CssClass="table table-striped table-condensed table-bordered table-hover"> <MasterTableView Width="100%" CommandItemDisplay="Top" EditMode="PopUp" CssClass="table table-condensed table-striped table-hover" DataKeyNames="sample.SampleId"> <EditFormSettings PopUpSettings-Height="1000px" PopUpSettings-Width="1150px" PopUpSettings-Modal="True" UserControlName="~/UserControls/SampleControl.ascx" EditFormType="WebUserControl"/> <CommandItemTemplate> <asp:Button ID="btnAddNewSample" Text="Add New Sample" runat="server" CommandName="InitInsert" CssClass="btn-sm btn-primary"></asp:Button> </CommandItemTemplate> <Columns> <telerik:GridEditCommandColumn UniqueName="EditCommandColumn" EditText="View/Edit" ButtonType="PushButton"> </telerik:GridEditCommandColumn> <telerik:GridBoundColumn UniqueName="SampleName" HeaderText="Sample ID" DataField="Location.SampleName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="SampleType" HeaderText="Sample Type" DataField="sample.SampleType"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="LabID" HeaderText="Lab ID" DataField="sample.LabNumber"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="Technician" HeaderText="Sample Taken By" DataField="sample.Technician"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="SampleDate" HeaderText="Date of Sample Collected" DataField="sample.SampleDate" DataFormatString="{0:d}"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ConfirmText="Are you sure to Delete the Sample?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete Sample" UniqueName="btnDeleteSample" ButtonType="FontIconButton" CommandName="Delete" /> </Columns> </MasterTableView> <ClientSettings> <ClientEvents OnRowDblClick="RowDblClick" OnPopUpShowing="onPopUpShowing" /> </ClientSettings></telerik:RadGrid>
Before the upgrade, working with any of the dropdowns, radio buttons, and calendar controls on the ascx web edit control worked smoothly. However, after upgrading to 2021.1.224.45, the entire edit webform blinks out and back in, which is very jarring to the end user.
Here is the code for the edit form:
<div runat="server" id="dvDataGrid" style="width: 100%" Visible="True"> <div style="background-color: lightgrey; height: 25px"> <asp:Label ID="lblSectionC" runat="server" CssClass="labelHeader" Text="Lab Results"></asp:Label> </div> <table style="width: 100%"> <tr> <td> <asp:Label ID="lblDirty" runat="server"></asp:Label> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <table style="width: 100%"> <tr> <td align="right"> <asp:Label ID="lblPPMTop" runat="server" Text="Total Quantity PPM: " CssClass="labelNormal"></asp:Label> <asp:Label ID="lblTotalPPMTop" runat="server" CssClass="labelNormal" ForeColor="Green"></asp:Label> </td> </tr> <tr> <td> <asp:DataGrid ID="dgLabResults" runat="server" AutoGenerateColumns="False" HeaderStyle-BackColor="CadetBlue" HeaderStyle-Font-Names="arial" HeaderStyle-ForeColor="Wheat" OnItemCommand="dgLabResults_InsertCommand" OnItemDataBound="dgLabResults_ItemDataBound" CellPadding="3" CellSpacing="0" Width="100%" CssClass="table table-bordered table-hover table-striped table-condensed"> <Columns> <asp:TemplateColumn HeaderText="LabID" Visible="false"> <ItemTemplate> <asp:Label ID="LabID" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "LabID")%>'></asp:Label> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="PCBTypeID" Visible="false"> <ItemTemplate> <asp:Label ID="PCBTypeID" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "PCBTypeID")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="UnitID" Visible="false"> <ItemTemplate> <asp:Label ID="UnitID" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "UnitID")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="PCB Type" ItemStyle-Width="130px"> <ItemTemplate> <asp:Label ID="lblPCBType" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "PCBType")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> <EditItemTemplate> <asp:DropDownList ID="dpPCBType" runat="server" CssClass="form-control input-sm"> </asp:DropDownList> <asp:Label ID="ecPCBType" runat="server" Text="" ForeColor="Red"></asp:Label> </EditItemTemplate> <FooterTemplate> <asp:DropDownList ID="dpPCBTypeNew" runat="server" CssClass="form-control input-sm"> </asp:DropDownList> <asp:Label ID="ecPCBTypeNew" runat="server" Text="" ForeColor="Red"></asp:Label> </FooterTemplate> <HeaderStyle CssClass="thead" /> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Detection Reporting Limit"> <ItemTemplate> <asp:Label ID="lblReportLimit" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "ReportLimit")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> <EditItemTemplate> <asp:TextBox ID="txtReportLimit" runat="server" CssClass="form-control input-sm" Text='<%#DataBinder.Eval(Container.DataItem, "ReportLimit")%>' Width="80px"> </asp:TextBox> <asp:Label ID="ckReportLimit" runat="server" Text="" ForeColor="Red"></asp:Label> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtReportLimitNew" runat="server" CssClass="form-control input-sm" Text="" Width="110px"> </asp:TextBox> <asp:Label ID="ckReportLimitNew" runat="server" Text="" ForeColor="Red"></asp:Label> </FooterTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Measured Quantity"> <ItemTemplate> <asp:Label ID="lblQuantity" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> <EditItemTemplate> <asp:TextBox ID="txtQuantity" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Quantity")%>' Width="80px" CssClass="form-control input-sm"> </asp:TextBox> <asp:Label ID="ecQuantity" runat="server" Text="" ForeColor="Red"></asp:Label> </EditItemTemplate> <FooterTemplate> <asp:TextBox ID="txtQuantityNew" runat="server" CssClass="form-control input-sm" Text="" Width="80px"> </asp:TextBox> <asp:Label ID="ecQuantityNew" runat="server" Text="" ForeColor="Red"></asp:Label> </FooterTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Unit"> <ItemTemplate> <asp:Label ID="lblUnit" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "Unit")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> <EditItemTemplate> <asp:DropDownList ID="dpUnit" runat="server" CssClass="form-control input-sm" DataTextField="Unit" DataValueField="Unit"> </asp:DropDownList> <asp:Label ID="ecdpUnit" runat="server" Text="" ForeColor="Red"></asp:Label> </EditItemTemplate> <FooterTemplate> <asp:DropDownList ID="dpUnitNew" runat="server" CssClass="form-control input-sm"> </asp:DropDownList> <asp:Label ID="ecdpUnitNew" runat="server" Text="" ForeColor="Red"></asp:Label> </FooterTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Quantity ppm"> <ItemTemplate> <asp:Label ID="lblQuantityPPM" runat="server" CssClass="labelNormal" Text='<%#DataBinder.Eval(Container.DataItem, "QuantityPPM")%>'></asp:Label> </ItemTemplate> <HeaderStyle CssClass="thead" /> </asp:TemplateColumn> <asp:EditCommandColumn UpdateText="Update" CancelText="Cancel" EditText="Edit" ValidationGroup="PCBType"> <HeaderStyle CssClass="thead" /> </asp:EditCommandColumn> <asp:ButtonColumn CommandName="Delete" Text="Delete"> <HeaderStyle CssClass="thead" /> </asp:ButtonColumn> <asp:TemplateColumn Visible="False"> <FooterTemplate> <asp:LinkButton ID="lbnInsert" runat="server" CommandName="Insert" Text="Save" ValidationGroup="PCBTypeNew" Font-Underline="True" /> <asp:LinkButton ID="lbnCancel" runat="server" CommandName="Cancel" Text="Cancel" Font-Underline="True" CausesValidation="false" /> </FooterTemplate> <HeaderStyle CssClass="thead" /> </asp:TemplateColumn> </Columns> </asp:DataGrid> </td> </tr> <tr> <td align="right"> <asp:Label ID="lblPPMBottom" runat="server" Text="Total Quantity PPM: " CssClass="Badge"></asp:Label> <asp:Label ID="lblTotalPPMBottom" runat="server" CssClass="Badge" ForeColor="Green"></asp:Label> </td> </tr> </table> <asp:CustomValidator ID="cvLabResults" runat="server" OnServerValidate="LabResults_ServerValidate" ValidationGroup="SubmitValidation" ErrorMessage="* Enter lab result"></asp:CustomValidator> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnAddLab" /> </Triggers> </asp:UpdatePanel> </td> </tr> <tr> <td align="right"> <asp:Button ID="btnAddLab" runat="server" CausesValidation="false" Text="Insert Lab Result" CssClass="btn-sm btn-primary" /> </td> </tr> </table> </div> <div align="center" style="position: relative; bottom: 0; right: 0"> <asp:Button ID="btnUpdate" Text="Update Sample" CssClass="btn-sm btn-primary" runat="server" CommandName="Update" Visible='<%# Not (TypeOf DataItem Is Telerik.Web.UI.GridInsertionObject) %>'></asp:Button> <asp:Button ID="btnInsert" Text="Insert Sample" CssClass="btn-sm btn-primary" runat="server" CommandName="PerformInsert" Visible='<%# (TypeOf DataItem Is Telerik.Web.UI.GridInsertionObject) %>'></asp:Button> <asp:Button ID="btnCancel" Text="Cancel" runat="server" CssClass="btn-sm btn-primary" CausesValidation="False" CommandName="Cancel"></asp:Button> </div></asp:PlaceHolder>
The majority of the control data on this edit form is loaded when the form loads, so there are no real performance bottlenecks on each individual control.
I'm not sure why postbacks with the newest version appear to be slower. Before the upgrade, only one of the text fields (which has a name lookup function) would very slightly flicker. The entire form never flickered or blinked.
Is there anything I can do on the grid via settings that would remedy this issue? I'm working under a time constraint to get Telerik upgraded on this application to ensure the application no longer has the AsyncUpload vulnerability of version older than the 2020 version, so I'm trying to not delay the upgrade process by reworking the entire edit form.
Thank you.
