0

我需要帮助弄清楚为什么在表单视图中并在运行时填充的某些控件在回发后会丢失其内容。

我有一个下拉列表(ddl_1),我根据同一个表单视图中另一个下拉列表(ddl_2)中的条目填充。一切似乎都可以正常工作,因为在此之后发生回发事件,新填充的下拉列表(ddl_1)为空。

这两个 ddls 的 EnableViewState 都设置为 true。ddl_2 是数据绑定的,但 ddl_1 不是。在 IsPostBack 子句中的 Page_Load 中,ddl_2 是数据绑定的,然后我调用填充 ddl_1 的函数。

如果我将 ddl_1 移到表单视图之外,它会在回发后保留其条目就可以了。

另一个类似的问题是表单视图中的文本框。在插入模式下,TextBox 的内容在回发后消失。但是,这不会在插入模式下发生。

导致这种情况的特定于 formview 的原因是什么?

非常感谢。

这是 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 回答