【问题标题】:UpdatePanel Crashing Other Update Panels Not WorkingUpdatePanel 崩溃其他更新面板不工作
【发布时间】:2017-03-13 15:36:38
【问题描述】:

我有很奇怪的问题。我以前使用过更新面板,从来没有遇到过问题,但是因为我正在分组listviews,所以我遇到了问题。我在一个页面上有大约 4 个更新面板,我在后面的代码中使用 panelname.update() 调用它们,并且习惯于所有工作。

然后因为我必须将一堆listviews 分组在一起,所以我不得不使用PageLoadDataBind,而不是实际将数据源放在asp 页面上。当页面加载时,这些数据都适用于Listview,但现在更新面板根本不适用于async postback

如果我在其余所有代码后面的代码中取出 uppnlSOL.Update(),则重新开始工作。导致问题的更新面板与包含listviewDataBind 的更新面板相同。

ASP 页面的所有面板都有childrenastriggers="false" UpdateMode="Conditional" 因此我从后面的代码中调用它们。我还尝试从后面的代码中删除uppnlSOL.Update(),并在asp 页面上的uppnlSOL 上放置一个触发器。一旦它启动,我就会得到相同的结果。我卸下了触发器,然后其他 3 个面板再次工作。我需要所有 4 个工作和 我很困惑,它几乎就像它在尝试更新面板或其他东西时的渲染。我什至在DataBind 之后尝试暂停 3 秒,然后尝试updatepanel.Update() 并且所有 4 仍然没有工作。

我会尝试在下面写一些代码来说明正在发生的事情。

Protected Sub Packing_Load(sender As Object, e As EventArgs) Handles Me.Load
    If IsPostBack = False Then
        lvSOLGrpDelAdd.DataSource = tblDespatchA.DespatchPackSOLGrpDelAdd_Get(IDSO:=hdnIDSO.Value)
        lvSOLGrpDelAdd.DataBind()
    End If

End Sub

Protected Sub lvSOLGrpDelAdd_RowDataBound(sender As Object, e As ListViewItemEventArgs) Handles lvSOLGrpDelAdd.ItemDataBound
    Dim lvSOLGrpDelMeth As ListView = DirectCast(e.Item.FindControl("lvSOLGrpDelMeth"), ListView)
    lvSOLGrpDelMeth.DataSource = tblDespatchA.DespatchPackSOLGrpDelMeth_Get(IDSO:=hdnIDSO.Value, IDGrpDelAdd:=DataBinder.Eval(e.Item.DataItem, "IDGrpDelAdd"))
    lvSOLGrpDelMeth.DataBind()
End Sub

Protected Sub lvSOLGrpDelMeth_RowDataBound(sender As Object, e As ListViewItemEventArgs)
    Dim lvSOL As ListView = DirectCast(e.Item.FindControl("lvSOL"), ListView)
    lvSOL.DataSource = tblDespatchA.DespatchPackSOL_Get(IDSO:=hdnIDSO.Value, IDGrpDelAdd:=DataBinder.Eval(e.Item.DataItem, "IDGrpDelAdd").ToString, IDGrpDelMeth:=DataBinder.Eval(e.Item.DataItem, "IDGrpDelMeth").ToString)
    lvSOL.DataBind()
End Sub

Protected Sub btnAllocateLine_Click(sender As Object, e As EventArgs)
    Dim lvRow As Object = DirectCast(sender, Object).Parent
    Dim hdnIDSOL As HiddenField = DirectCast(lvRow.FindControl("hdnIDSOL"), HiddenField)
    Dim lstQtyAvail As DropDownList = DirectCast(lvRow.FindControl("lstQtyAvail"), DropDownList)
    tblDespatchA.DespatchPackSOLAllocate_Save(IDSO:=hdnIDSO.Value, IDSOL:=hdnIDSOL.Value, AllocateQty:=lstQtyAvail.SelectedValue)
    Bind()
End Sub

Protected Sub Bind()
    uppnlDOL.DataBind()
    uppnlDOL.Update()

    uppnlDBox.DataBind()
    uppnlDBox.Update()

    uppnlFooter.DataBind()
    uppnlFooter.Update()

'I HAVE TO REGET FROM DATABASE CHANGES THAT HAVE HAPPEN AND 
'I KNOW THIS BIT WORKS BECAUSE I HAVE TESTED THE DATA.
    lvSOLGrpDelAdd.DataSource = tblDespatchA.DespatchPackSOLGrpDelAdd_Get(IDSO:=hdnIDSO.Value) 
    lvSOLGrpDelAdd.DataBind()
    uppnlSOL.Update() ' THIS BIT WHEN I PUT IN THIS MAKES ALL THE OTHER PANELS CRASH
End Sub

【问题讨论】:

    标签: asp.net vb.net crash updatepanel


    【解决方案1】:

    我们又来了,我回答我自己的问题,因为没有人会帮忙,但我会帮助有类似情况的其他人,因为我很好。

    它崩溃所有其他面板的原因是因为在我的 ASP.net 页面上有一些使用 生成的代码,并且因为使用 Response.Write 导致它崩溃.

    更新面板正在执行异步回发,而我在 PanelName.Update() 导致此问题的同时调用了 Response.Write()。我正在寻找另一种在不使用 response.write 的情况下写入屏幕的方法,这将解决我的第二个问题。

    任何想法将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-10
      • 2012-04-23
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      相关资源
      最近更新 更多