277 messaggi dal 20 maggio 2001
Ho realizzato quanto segue:

http://www.danielemarino.name/Start.aspx

Ho un fastidioso problema: selezionando, ad esempio:

Tipo installazione: IN LUCE
Modello: AIR
Finitura: WOODGRAIN

e selezionando poi, ad esempio Woodgrain 9016, se poi cambio il modello, scegliendone uno qualsiasi, vedo comunque ancora i WOODGRAIN. Cosa sbaglio?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
presumo che al cambiamento della dropdownlist modelTypeSelectIN (cioè all'OnSelectedIndexChanged), tu non stia aggiornando il contenuto delle finiture.

Non riesco a determinare da fuori se si tratti di un Panel o di un databound control. Dovresti postare un po' di codice.

ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 20 maggio 2001
Non utilizzo PANEL nè Databound Control. Ecco un pò di codice:

        protected void installationTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(installationTypeSelect.SelectedValue != null)
            {
                if(installationTypeSelect.SelectedValue == "inLuce")
                {
                    Response.Redirect("Start.aspx");
                }
                if(installationTypeSelect.SelectedValue == "oltreLuce")
                {
                    Response.Redirect("StartOltre.aspx");
                }
            }
        }


Questo mostra le finiture in base al modello selezionato:
codice:

        protected void modelTypeSelectIN_SelectedIndexChanged(object sender, EventArgs e)
        {
            HideAllStart();


            if (modelTypeSelectIN.SelectedValue == "air_IN")
            {
                finituraIN_AIR.Visible = true;
 
            }
            else
            {
                finituraIN_AIR.Visible = false;
                


            }


            if(modelTypeSelectIN.SelectedValue=="box_IN")


            {
                finituraIN_BOX.Visible = true;


            }
            else
            {
                finituraIN_BOX.Visible = false;
                
            }


            if(modelTypeSelectIN.SelectedValue =="plana_IN")
            {
                finituraIN_PLANA.Visible = true;


            }
            else
            {
                finituraIN_PLANA.Visible = false;
            }
            if(modelTypeSelectIN.SelectedValue == "wide_IN")
            {
                finituraIN_WIDE.Visible = true;


            }
            else
            {
                finituraIN_WIDE.Visible = false;
            }
            if(modelTypeSelectIN.SelectedValue == "wave_IN")
            {
                finituraIN_WAVE.Visible = true;


            }
            else
            {
                finituraIN_WAVE.Visible = false;
            }
            if(modelTypeSelectIN.SelectedValue =="sound_IN")
            {
                finituraIN_SOUND.Visible = true;
            }
            else
            {
                finituraIN_SOUND.Visible = false;
            }


            if(modelTypeSelectIN.SelectedValue== "planaFG_IN")
            {
                finituraIN_PLANA_FG.Visible = true;
            }
            else
            {
                finituraIN_PLANA_FG.Visible = false;
            }




        }


Questo mostra o nasconde le miniature
codice:

        protected void finitureWIDE_IN_SelectedIndexChanged(object sender, EventArgs e)        {
            if(finituraIN_WIDE.SelectedValue == "WideWoodGrain_IN")
            {
                ShowWideWoodGrainIn();
            }
           else
            {
                HideWideWoodGrainIn();
            }


            if(finituraIN_WIDE.SelectedValue == "WideWoodStyle_IN")
            {
                ShowWideWoodStyleIn();
            }
            else
            {
                HideWideWoodStyleIn();
            }
            if (finituraIN_WIDE.SelectedValue == "WideSlightGrain_IN")
            {
                ShowWideSlightGrainIn();
            }
            else
            {
                HideWideSlightGraIn();
            }


            if(finituraIN_WIDE.SelectedValue== "WideSmooth_IN")
            {
                ShowWideSmooth();
            }
            else
            {
                HideWideSmooth();
            }

11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
Il problema è qui.
protected void modelTypeSelectIN_SelectedIndexChanged(object sender, EventArgs e)
{
  HideAllStart();
  if (modelTypeSelectIN.SelectedValue == "air_IN")
  {
    finituraIN_AIR.Visible = true;
  }
  else
  {
   finituraIN_AIR.Visible = false;
  }


Con questo codice rendi visibile la dropdownlist delle finiture relative al prodotto selezionato (e questo va bene) però devi fare la stessa cosa anche con le miniature.
Io direi che è sufficiente nascondere tutti i riquadri delle miniature. Quindi aggiungi la chiamata a un metodo HideAllThumbnails(); come vedi qui.
protected void modelTypeSelectIN_SelectedIndexChanged(object sender, EventArgs e)
{
  HideAllStart();
  HideAllThumbnails(); //QUI. Scriviti un metodo che nasconda tutte le miniature
  if (modelTypeSelectIN.SelectedValue == "air_IN")
  {
    finituraIN_AIR.Visible = true;
  }
  else
  {
   finituraIN_AIR.Visible = false;
  }


Il metodo HideAllThumbnails() dovrà nascondere tutte le miniature, quindi sarà una roba tipo:
private void HideAllThumbnails()
{
   HideWideWoodGrainIn();
   HideWideWoodStyleIn();
   HideWideSlightGraIn();
   //...
}


ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 20 maggio 2001
Il metodo HideAllStart() fa proprio quello, è ciò che non capisco. Te lo riporto:

        protected void HideAllStart()
        {
            HideAirModelIN();
            HideAirSlightGrainIN();
            HideAIRSmoothIN();
            HideAIRWoodGrainIN();
            HideInBoxWoodGrain();
            HideInBoxWoodStyle();
            HidePlana();
            HidePlanaColorIn();
            HidePlanaFG();
            HidePlanaFullGlass();
            HidePlanaMaterialIN();
            HidePlanaWoodIN();
            HideSoundSlightGrainIN();
            HideSoundWoodGrainIN();
            HideSoundWoodStyleIN();
            HideWaveIn();
            HideWideSlightGraIn();
            HideWideSmooth();
            HideWideWoodGrainIn();
            HideWideWoodStyleIn();
        }


Eccoti uno dei metodi che richiama HideAllStart()

        protected void HideAirModelIN()
        {
            Div_IN_AirSlightGrain6009.Visible = false;
            Div_IN_AirSlightGrain7016.Visible = false;
            Div_IN_AirSlightGrain7035.Visible = false;
            Div_IN_AirSlightGrain7040.Visible = false;
            Div_IN_AirSlightGrain8016.Visible = false;
            Div_IN_AirSlightGrain9002.Visible = false;
            Div_IN_AirSlightGrain9016.Visible = false;
            Div_IN_AirSmooth9006.Visible = false;
            Div_IN_AirWoodGrain6009.Visible = false;
            Div_IN_AirWoodGrain7016.Visible = false;
            Div_IN_AirWoodGrain7035.Visible = false;
            Div_IN_AirWoodGrain7040.Visible = false;
            Div_IN_AirWoodGrain8016.Visible = false;
            Div_IN_AirWoodGrain9002.Visible = false;
            Div_IN_AirWoodGrain9006.Visible = false;
            Div_IN_AirWoodGrain9016.Visible = false;
            Div_IN_AirWoodStyleChiara.Visible = false;
            Div_IN_AirWoodStyleMedia.Visible = false;
            Div_IN_AirWoodStyleMedioScuro.Visible = false;
            Div_IN_AirWoodstylePlusChiara.Visible = false;
            Div_IN_AirWoodstylePlusMedia.Visible = false;
        }


Non capisco cosa sbaglio!
11.886 messaggi dal 09 febbraio 2002
Contributi
Hai provato a usare il debugger di Visual Studio per capire se l'esecuzione passa per la funzione HideAllStart() quando si cambia articolo?

ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 20 maggio 2001
Sinceramente non ho provato. Disabilitando però il ViewState a livello di pagina, il problema non si presenta, anche se poi ne vengono fuori degli altri molto fastidiosi, quindi vorrei risolvere diversamente.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
comprendi, vero, che questa perdita di tempo è dovuta al fatto che non usi il debugger e che hai scritto un botto di controlli server per rappresentare una pagina così semplice?

Io ti posso rispondere stasera sul tardi. Nel frattempo prova ad usare il debugger per capire se i tuoi metodi vengono invocati.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.