2009-08-03 4 views
0

Ich habe eine Dropdown-Liste auf einem ASP.NET-Webformular. Es ist auf Autopostback eingestellt und Viewstate ist aktiviert. Wenn ich mein Projekt von Visual Studio aus starte, kann ich den Wert ändern, den neuen Wert im Postback übernehmen und einige Ergebnisse in einem Raster anzeigen (Infragistics). Ich kann den Wert und die Grid-Updates weiterhin korrekt ändern.Warum löscht meine Dropdown-Liste nach dem Postback in der Live-Umgebung, aber nicht im Test?

Wenn ich dies von meinem Test/dev-Box auf den Live-Windows 2008-Server kopieren, alle Änderungen. Die erste Änderung am Dropdown-Menü verursacht ein Postback, aber das Raster wird nicht aktualisiert, da das SelectedIndexChanged-Ereignis der Dropdownliste nicht ausgelöst wird. Die zweite Änderung löscht das Dropdown vollständig.

Die Elemente im Dropdown werden erstellt, wenn die Seite zuerst als einfache ListItems geladen wird, die der Items-Auflistung des Steuerelements hinzugefügt werden. Die Werte werden von einem Microsoft CRM-System abgerufen, jedoch nicht datengebunden.

Kann jemand erklären, was schief läuft und warum das Verhalten in Visual Studio anders sein würde, wenn es live ist?

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

Antwort

3

Wenn Sie sicher sind, dass der Code auf der Testmaschine und der Live-Maschine die gleiche ist - sind Sie sicher, dass die web.config das gleiche auch?

Sie können Viewstate Ein- und Ausschalten in der web.config:

<pages enableViewState="false" /> 

Sie möglicherweise auf sie eingeschaltet haben könnte bei der Entwicklung, sondern schaltete das Live-web.config aus.

+0

Es war CRM's web.config Deaktivierung Viewstate, danke :) –

Verwandte Themen