2017-03-13 7 views
-1

私は非常に奇妙な問題があります。以前はアップデートパネルを使用していましたが、問題はありませんでしたが、グループ化しているためにlistviews問題が発生します。私はコードの後ろにpanelname.update()を使用して呼び出すページに約4つの更新パネルを持っていて、すべての作業に慣れていました。私はお互いの内側のグループにlistviewsの束を持っていたのでUpdatePanel他のアップデートパネルがクラッシュする不具合

それから私は実際にaspページ上のデータソースを置くのではなく、PageLoadDataBindにを使用する必要がありました。ページが読み込まれると、データはすべてListviewで動作しますが、更新パネルはasync postbackではまったく動作しません。

私がコード内でuppnlSOL.Update()を取り除くと、すべての残りの部分が再び機能し始めます。問題を引き起こす更新パネルは、DataBindlistviewを含むものと同じものです。

ASPページにはすべてchildrenastriggers="false" UpdateMode="Conditional"のパネルがありますので、私はそれらをすべてコードの背後から呼びます。また、uppnlSOL.Update()をコードの後ろから削除し、のaspページにトリガーを配置してみました。それが始まると同じ結果が得られます。私はトリガーを取り除き、他の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 

答えて

0

ここでは、誰も助けないだろうので、私は自分の質問に答えるが、私は素敵だから、私は似たような状況で誰を助ける再度行きます。

他のすべてのパネルをクラッシュさせた理由は、私のASP.netページには、Response.Write( "stuff here")%>を使用して<%を使用してコードが生成されていて、クラッシュ。

更新パネルは非同期のポストバックを行い、PanelName.Update()がResponse.Write()を呼び出すと同時にこの問題が発生しました。私はresponse.writeを使わずに画面に書き込む別の方法を探しています。それは私の2番目の問題を解決します。

いずれのアイデアも高く評価されます。