0

我在 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();
   }
4

1 回答 1

3

如果您确定测试机器和实时机器上的代码相同 - 您确定 web.config 也相同吗?

您可以在 web.config 中打开和关闭 ViewState:

<pages enableViewState="false" />

您可能在开发时将其打开,但在实时 web.config 上关闭。

于 2009-08-03T19:53:59.280 回答