我在 ASP.NET Web 表单上有一个下拉列表。它设置为自动回发并启用视图状态。当我从 Visual Studio 运行我的项目时,我可以更改值,在回发中获取新值并在网格中显示一些相关结果(Infragistics)。我可以不断更改值并且网格会正确更新。
当我将它从我的测试/开发框复制到实时 Windows 2008 服务器时,所有更改。对下拉列表的第一次更改会导致回发,但网格不会更新,因为下拉列表的 SelectedIndexChanged 事件不会触发。第二个更改完全清除了下拉列表。
下拉列表中的项目是在页面首次加载为添加到控件的 Items 集合中的简单 ListItem 时创建的。这些值是从 Microsoft CRM 系统中检索的,但不是数据绑定的。
任何人都可以解释发生了什么问题以及为什么 Visual Studio 中的行为会与实际情况不同吗?
protected void Page_Load(object sender, EventArgs e)
{
_crm = GetCrmConnection();
if (!IsPostBack)
{
ShowDepotList();
ShowJobsForCurrentDepot(); // Updates the grid - not shown in SO
}
}
private void ShowDepotList()
{
List<BusinessEntity> depots = _crm.GetDepots();
foreach (DynamicEntity depot in depots)
{
string depotName = depot.Properties["dpt_name"].ToString();
string locationName = depot.Properties["dpt_locationname"].ToString();
ListItem depotListItem = new ListItem
{
Text = string.Format("{0} - {1}", depotName, locationName),
Value = ((Key)depot.Properties["dpt_sitedetailid"]).Value.ToString()
};
DepotInput.Items.Add(depotListItem);
}
}
protected void DepotInput_SelectedIndexChanged(object sender, EventArgs e)
{
ShowJobsForCurrentDepot();
}