UpdatePanel 崩溃其他更新面板不工作
UpdatePanel Crashing Other Update Panels Not Working
我有很奇怪的问题。我以前使用过更新面板,从来没有遇到过问题,但是因为我正在分组 listviews
,所以我遇到了问题。我在一个页面上有大约 4 个更新面板,我通过使用代码隐藏中的 panelname.update()
调用它们,并且用于所有工作。
然后因为我必须将一堆 listviews
分组在一起,所以我不得不使用 PageLoad
到 DataBind
而不是实际将数据源放在 asp
页。页面加载时,所有数据都适用于 Listview
,但现在更新面板根本不适用于 async postback
。
如果我在后面的代码中删除 uppnlSOL.Update()
,剩下的就重新开始工作。导致该问题的更新面板与包含 listview
和 DataBind
的更新面板相同。
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 页面上有一些使用 <% Response.Write("stuff here") %> 生成的代码并且因为使用Response.Write 导致它崩溃。
更新面板正在执行异步 post 返回,我在 PanelName.Update() 的同时调用 Response.Write() 导致了这个问题。我正在寻找另一种不使用 response.write 写入屏幕的方法,这将解决我的第二个问题。
如有任何想法,我们将不胜感激。
我有很奇怪的问题。我以前使用过更新面板,从来没有遇到过问题,但是因为我正在分组 listviews
,所以我遇到了问题。我在一个页面上有大约 4 个更新面板,我通过使用代码隐藏中的 panelname.update()
调用它们,并且用于所有工作。
然后因为我必须将一堆 listviews
分组在一起,所以我不得不使用 PageLoad
到 DataBind
而不是实际将数据源放在 asp
页。页面加载时,所有数据都适用于 Listview
,但现在更新面板根本不适用于 async postback
。
如果我在后面的代码中删除 uppnlSOL.Update()
,剩下的就重新开始工作。导致该问题的更新面板与包含 listview
和 DataBind
的更新面板相同。
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 页面上有一些使用 <% Response.Write("stuff here") %> 生成的代码并且因为使用Response.Write 导致它崩溃。
更新面板正在执行异步 post 返回,我在 PanelName.Update() 的同时调用 Response.Write() 导致了这个问题。我正在寻找另一种不使用 response.write 写入屏幕的方法,这将解决我的第二个问题。
如有任何想法,我们将不胜感激。