为什么我的下拉列表在回发后在实时环境中清除但未在测试中清除?

时间:2009-08-03 10:43:39

标签: asp.net dynamics-crm

我在ASP.NET Web表单上有一个下拉列表。它设置为autopostback并启用viewstate。当我从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();
   }

1 个答案:

答案 0 :(得分:3)

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

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

<pages enableViewState="false" />

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