Почему мой выпадающий список очищается после обратной передачи, когда он находится в рабочей среде, но не в тестировании? - PullRequest
0 голосов
/ 03 августа 2009

У меня есть выпадающий список на веб-форме ASP.NET. Это установлено на автостопбек и viewstate включен. Когда я запускаю свой проект из Visual Studio, я могу изменить значение, выбрать новое значение в обратной передаче и отобразить некоторые связанные результаты в сетке (Infragistics). Я могу постоянно менять значение и сетку обновлять правильно.

Когда я копирую это из своего окна test / dev на работающий сервер Windows 2008, все меняется. Первое изменение в раскрывающемся списке вызывает обратную передачу, но сетка не обновляется, поскольку событие SelectedIndexChanged в раскрывающемся списке не запускается. Второе изменение полностью удаляет выпадающий список.

Элементы в раскрывающемся списке создаются при первой загрузке страницы в виде простых элементов ListItems, которые добавляются в коллекцию Items элемента управления. Значения извлекаются из системы 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 Ответ

3 голосов
/ 03 августа 2009

Если вы уверены, что код на тестовом компьютере и на действующем компьютере одинаков - вы уверены, что web.config также одинаков?

Вы можете включать и выключать ViewState в web.config:

<pages enableViewState="false" />

Возможно, вы включили его при разработке, но отключили на live web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...