带有UserControls和页面级别异步方法的asp.net UpdatePanel

时间:2017-05-31 12:52:35

标签: asp.net vb.net asynchronous user-controls updatepanel

我有一个asp.net页面,其中包含一些基本标签等,以及一个包含UserControl动态列表的updatepanel。每个控件都有自己的UpdatePanel和基本控件。我已经为这些控件共同设置了折叠/扩展功能,并且迄今为止工作正常。

为了提高网页效率,我一直致力于“Async-ify'加载期间发生的大量数据处理,以显示在这些字段和用户控件中。

在所有这些变化之后,一切都运行良好(包括大幅提升性能),除了一件事 - 崩溃/扩展不再有效。折叠模式下可查看的有限数据'已经更新了。

恢复为数据的非异步调用,一切正常,但再次变慢。

就像他们经常被迫回到原始默认状态(折叠),在每个回发上,由崩溃/展开按钮触发。但是从这个角度来看,没有任何改变我实际上只是将数据调用更改为等待异步而不是非异步,因为我夸大其词,除了这个问题之外的一切都很好。

我可以发布任何代码,但不确定相关内容。我所做的唯一改变如下:

Protected Async Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Update()
End Sub

Private Async Function Update() As Task

    Dim AController As New CIP_WS.ARFController

    ARF = AController.GetARFWithResults(Client.ClientID, PRN, Nothing, StartTime, EndTime, CIP_WS.LabResultController.InequalityModes.AsIs)

    PrintBasic()

    PrintSPC()

    PrintPhotos()

    PrintResults()

    PrintHistoricEdits()

End Function

以上工作正常 - 非异步

Protected Async Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   RegisterAsyncTask(New PageAsyncTask(Function() Update()))
End Sub

Private Async Function Update() As Task

    Dim AController As New CIP_WS.ARFController

    Dim ARFTask As Task(Of CIP_WS.ARF) = AController.GetARFWithResultsAsync(Client.ClientID, PRN, Nothing, StartTime, EndTime, CIP_WS.LabResultController.InequalityModes.AsIs)

    ARF = Await ARFTask

    PrintBasic()

    PrintSPC()

    PrintPhotos()

    PrintResults()

    PrintHistoricEdits()

End Function

以上,一切正常,但usercontrol不会保持更新的折叠/展开状态。

任何最感谢的帮助

编辑_____

按要求展开/折叠方法:

Partial Class wucLabResultPack

Inherits System.Web.UI.UserControl
Private _Expanded As Boolean

 Public Property Expanded() As Boolean
    Get
        Return _Expanded
    End Get
    Set(ByVal value As Boolean)
        _Expanded = value
        ViewState("Expanded") = _Expanded
        UpdateExpandPanel()
    End Set
End Property

Protected Sub imgExpand_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgExpand.Click
    ToggleExpanded()
End Sub

Private Sub ToggleExpanded()
    Expanded = Not Expanded
End Sub

Private Sub UpdateExpandPanel()
    If Expanded Then
        pnlDetail.Visible = True
        imgExpand.ImageUrl = "Images/Shrink.png"
    Else
        pnlDetail.Visible = False
        imgExpand.ImageUrl = "Images/Expand.png"
    End If
End Sub

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If IsPostBack Then
        Expanded = CInt(ViewState("Expanded"))
    End If
End Sub

0 个答案:

没有答案