Asp.net DropDownList仅在现场回发时丢失数据源
我有一个使用ASP.Net控件和VB.Net代码的DotNetNuke网页。在页面加载时,我检索一个包含所有用户工单的数据集。此数据集用于填充asp:datagrid。我还检索数据集来填充组合框,其中包括用户的零售帐户、服务类型、订单状态和零售位置。在为这些DropDownList中的任何一个选择DexChange时,我创建/修改DataGridFilter以修改网格的显示结果。我将完整的工单数据集存储为会话变量 在我的开发环境中,我在本地主机上运行,一切正常。当我的代码发布到我的live站点时,页面会按预期加载,并在设置和绑定数据源时调用每个DropDownList的SelectedIndexChange事件。但是当用户从任何dropdownlists中进行选择时,所有dropdownlists的数据源似乎都丢失了。这在开发环境中不会发生。生活和发展方面的数据库似乎具有相同的结构和数据Asp.net DropDownList仅在现场回发时丢失数据源,asp.net,vb.net,drop-down-menu,dotnetnuke,Asp.net,Vb.net,Drop Down Menu,Dotnetnuke,我有一个使用ASP.Net控件和VB.Net代码的DotNetNuke网页。在页面加载时,我检索一个包含所有用户工单的数据集。此数据集用于填充asp:datagrid。我还检索数据集来填充组合框,其中包括用户的零售帐户、服务类型、订单状态和零售位置。在为这些DropDownList中的任何一个选择DexChange时,我创建/修改DataGridFilter以修改网格的显示结果。我将完整的工单数据集存储为会话变量 在我的开发环境中,我在本地主机上运行,一切正常。当我的代码发布到我的live站点时
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dsStatus As DataSet
Dim dsChangeStatus As DataSet
If IsPostBack Then
If Not Session.Item("WorkOrdersDS") Is Nothing Then
m_dsWorkOrders = CType(Session.Item("WorkOrdersDS"), DataSet)
End If
If Not ViewState("DataGridFilter") Is Nothing Then
m_DataGridFilter = ViewState("DataGridFilter").ToString
End If
Else
ddAccount.DataTextField = "NameCity"
ddAccount.DataValueField = "AccountID"
LoadRetailAccounts()
LoadLocations(CInt(Me.ddAccount.SelectedValue))
dgWorkOrders.Attributes("SortExpression") = "LastUpdated_DT"
dgWorkOrders.Attributes("SortASC") = "DESC"
dsStatus = m_DL.RunSPGetDS("PRC_GSI_CSWorkOrder_Status_S")
With ddStatus
.DataTextField = "Status_VC"
.DataValueField = "Status_ID"
.DataSource = dsStatus
.DataBind()
End With
Library.GSI.Library.ControlHelp.CreateBlankFirstItem(ddStatus, "All Except Withdrawn", "-1")
Library.GSI.Library.ControlHelp.CreateBlankFirstItem(ddStatus, "All", "0")
dsChangeStatus = m_DL.RunSPGetDS("PRC_GSI_CSWorkOrder_Status_S_CanChange")
With ddChangeStatus
.DataTextField = "Status_VC"
.DataValueField = "Status_ID"
.DataSource = dsChangeStatus
.DataBind()
End With
If Me.ddAccount.SelectedItem.ToString.Substring(0, 1) = "*" Then
CreateOrgChartFilter()
Else
CreateFilter()
End If
GetWorkOrdersList()
LoadServiceTypes()
BindDataGrid()
End If
End Sub
What am I missing that might be different in my live and development code?
不过,DataGrid并没有失去它的价值,对吗?只有下拉列表?是的,datagrid根本不显示(没有标题,什么也没有)。我假设这是因为没有值可以传递给datagridfilter,因为DropDownList中没有这些值来自的值。我知道page_load事件实际上在selectedindex_change事件之前调用,但是在这两个事件之间是否存在可能发生的事件?经过更多测试,似乎只有部分用户才会发生错误。这给我的印象是,错误可能是由数据引起的,我得到了一个未经处理的空引用异常,但我已经仔细阅读了代码和数据,感到不知所措。您是否有任何try-catch块可能会吞噬您的用户体验的错误?我在故障排除期间添加了不同的try-cath块。我的老板让我更换datagridfilter,每次选定的索引更改都返回数据库。现在,我将所有参数传递给存储过程并在SELECT查询中进行筛选,而不是获取完整的数据集并进行筛选。错误仍然存在。我不再使用任何会话变量(与此页面相关)。