0

フォームビュー内にあり、実行時に入力される一部のコントロールがポストバック後に内容を失う理由を理解するのに助けが必要です。

同じフォームビューの別のドロップダウンリスト (ddl_2) からのエントリに基づいて入力するドロップダウンリスト (ddl_1) があります。ポストバック イベントが発生すると、すべて正常に動作するように見えます。その後、新しく入力されたドロップダウン リスト (ddl_1) は空になります。

これら両方の ddls の EnableViewState は true に設定されています。ddl_2 はデータバインドされていますが、ddl_1 はデータバインドされていません。IsPostBack 句の Page_Load では、ddl_2 がデータバインドされており、ddl_1 を設定する関数を呼び出します。

フォームビューの外に ddl_1 を移動すると、ポストバック後もエントリが保持されます。

別の同様の問題は、フォームビュー内の TextBox にあります。挿入モードの場合、TextBox の内容はポストバック後に消えます。ただし、これは挿入モードでは発生しません。

これを引き起こすフォームビューに固有のものは何ですか?

どうもありがとう。

これが Page_load コードです。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) は Me.Load を処理します

    If Not IsPostBack Then

        If NavHelper.User.UserName = "" Then
            Dim UserIP As String
            Dim UserLogin As String
            Dim UserEmail As String
            UserIP = HttpContext.Current.Request.UserHostAddress
            UserLogin = HttpContext.Current.Session("Username")
            UserEmail = HttpContext.Current.Session("Email")
            GetUserInfo()

            CurrentRFQ = Nothing
            If NavHelper.RFQ.ID = -1 Then
                formview_RFQ.ChangeMode(FormViewMode.Insert)
                tabpanelCustomerParts.Visible = False
                tabpanelDocuments.Visible = False
                tabpanelReviews.Visible = False
                tabpanelRFQReviewHistory.Visible = False
                listview_CustomerParts.Dispose()

            Else
                formview_RFQ.ChangeMode(FormViewMode.Edit)
                listview_ReviewContracts_Initial.EditIndex = 0
                SessionHelper.CurrentObject = TAA.Library.RFQ.GetObject(NavHelper.RFQ.ID)
                mRFQ = DirectCast(SessionHelper.CurrentObject, TAA.Library.RFQ)
                Dim UserdeptTotal As Long
                UserdeptTotal = HttpContext.Current.Session("DepartmentTotal")
                If formview_RFQ.FindControl("ddlCompanyBuyerNVList") IsNot Nothing Then
                    Dim ddl As DropDownList = DirectCast(formview_RFQ.FindControl("ddlCompanyBuyerNVList"), DropDownList)
                    FillCompanyNameDropDownList(ddl)
                End If
                tabpanelCustomerParts.Visible = True
                tabpanelDocuments.Visible = True
                tabpanelReviews.Visible = True
                tabpanelRFQReviewHistory.Visible = True
                If NavHelper.RFQ.Copy = True Then
                    SetModifyCopy()
                End If
            End If
        Else    'IsPostBack
            datasource_BuyerNVList.Dispose()
            datasource_BuyerNVList.DataBind()               
            Dim ddl As DropDownList
            If (formview_RFQ.CurrentMode = FormViewMode.Insert) Then
                ddl = DirectCast(formview_RFQ.FindControl("ddlCompanyBuyerNVListInsert"), DropDownList)
            ElseIf formview_RFQ.FindControl("ddlCompanyBuyerNVList") IsNot Nothing Then
                ddl = DirectCast(formview_RFQ.FindControl("ddlCompanyBuyerNVList"), DropDownList)
            End If
            FillCompanyNameDropDownList(ddl)
        End If
    End If
End Sub
4

1 に答える 1

0

ドロップダウンをバインドするときに IsPostback オプションを使用します。

if (!IsPostback)
{
   BindDropdown1();
   BindDropdown2();
}

これにより、状態が保持されます。毎回 ispostback を使用していない場合、ページを更新するたびにドロップダウンがバインドされます。そのため、ドロップダウンのバインドに初めて ispostback を使用します。

于 2013-10-16T04:40:56.807 に答える