ASP.NET - Gridview - 具有延迟

时间:2017-10-23 14:08:37

标签: asp.net performance datagridview production-environment

背景:

填充数据网格和图像控件的页面缓慢。发现了分析结果" OnRowCreated" grdview事件触发延迟大约30到40秒,无能为力,考虑到过去2年在功能上没有更新的事实,除了环境(OS升级到Win 2008 R2,常规微软更新)和infra升级。

我的分析到目前为止......: 考虑到过去2年没有功能上更新/补丁发布的事实,应用程序运行正常,直到最近出现缓慢,我相信这是一个环境相关的问题,可能导致缓慢,所以集中分析这方面但是徒劳无功

所以不知怎的,我必须用具体的证据来证明它和环境问题,我随着时间为每个事件/方法(开始和结束)创建了日志,并找到了一个特定的方法,它被触发" OnRowCreated " gridview事件被延迟触发,所有其他方法都很好,包括数据库更新和检索。

对于突然造成这种延迟的原因一无所知*(是因为环境变化,如与.Net等相关的微软升级)*。请帮忙。代码片段如下。

设计页面来源(ASPX文件):

<asp:GridView ID="gvTrans" runat="server" AutoGenerateColumns="False" Width="931px"
                                                        CaptionAlign="Left" Font-Bold="True" OnRowCommand="gvTransCommand" OnRowCreated="gvTrans_RowCreated"
                                                        OnRowDataBound="gvTrans_RowDataBound" CssClass="grid" Height="150px">
                                                        <HeaderStyle CssClass="gridheader1" />
                                                        <RowStyle CssClass="gridcell" />
                                                        <AlternatingRowStyle CssClass="gridcell2" />
                                                        <SelectedRowStyle CssClass="gridseletedrow" />
                                                        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                                        <Columns>

ASPX.VB页面中的方法定义:

Protected Sub gvTrans_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If (e.Row.RowType = DataControlRowType.DataRow) Then

            If (Not Information.IsNothing(RuntimeHelpers.GetObjectValue(e.Row.DataItem)) AndAlso Operators.ConditionalCompareObjectEqual(NewLateBinding.LateIndexGet(e.Row.DataItem, New Object() {"ShowAtSelectedRecord"}, Nothing), "1", False)) Then
                Me.gvTrans.SelectedIndex = e.Row.RowIndex
                e.Row.CssClass = Me.gvTrans.SelectedRowStyle.CssClass
            End If
            Dim button As Button = DirectCast(e.Row.FindControl("lnkGridItemId"), Button)
            button.CommandArgument = e.Row.RowIndex.ToString
        End If
    End Sub

提前致谢

0 个答案:

没有答案