【发布时间】:2017-03-13 15:36:38
【问题描述】:
我有很奇怪的问题。我以前使用过更新面板,从来没有遇到过问题,但是因为我正在分组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 vb.net crash updatepanel