2011-02-05 3 views
0

J'utilise une liste déroulante de databound pour remplir une zone de liste déroulante avec des itérations de projet et un contrôle ascx pour afficher un nuage de points. Je récupère la valeur selectedValue de la liste déroulante et la stocke comme une session pour filtrer le nuage de tags (pour l'ensemble du projet ou par itération). J'obtiens une erreur, car la valeur par défaut que j'ai entrée ne peut pas être convertie en entier. Merci d'avance pour votre aide!SelectedIndexChanged pour filtrer le contrôle ascx

filteroptions.Items.Insert(0, "Entire Project"); 

ASP.NET FICHIER:

protected void filteroptions_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selected_iteration = filteroptions.SelectedValue; 

    Session["iteration"] = selected_iteration; 

} 

ASCX CONTROL:

protected void Page_Load(object sender, EventArgs e) 
{ 
    proj_name = Request.QueryString["project"].ToString(); 
    proj_id = Request.QueryString["id"].ToString(); 

    iteration = (string)Session["iteration"]; 

    BindTagCloud(); 

} 

private void BindTagCloud() 
{ 

    int pro_id = Convert.ToInt32(proj_id); 
    int iteration_id = Convert.ToInt32(iteration); 

.... 

if (iteration_id != 0) 
    { 
     ListView1.DataSource = tagCloudNegativeIteration; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositiveIteration; 
     ListView2.DataBind(); 

    } 
    else 
    { 
     ListView1.DataSource = tagCloudNegative; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositive; 
     ListView2.DataBind(); 

    } 
} 
+0

quelle est exactement l'erreur que vous obtenez? Est-ce une 'NullReferenceException'? – Victor

Répondre

0

le problème est que vous définissez la valeur d'itération à null sur la charge initiale. vous pouvez utiliser ce code pour tomber toujours à une valeur par défaut si pour une raison quelconque, votre La variable de session devient nulle. Vous pouvez faire de votre variable d'itération un entier afin de pouvoir convertir dans votre charge.

if(String.IsNullOrEmpty(Sesssion["iteration"]) 
    iteration = "0"; 
else 
    iteration = Session["iteration"] 

Et de changer la manière dont vous ajoutez des éléments à ce que les aquinas suggéré.

0

utilisent ce ..

if(Session["iteration"] == Defaultvalue) 
    itereation = "0"; 
else 
    iteration = (string)Session["iteration"]; 

et valeur par défaut est la valeur qui est stockée dans session ["itération"] si aucune valeur n'est stockée dans ce t alors utilisez null comme valeur par défaut.

1

Eh bien, vous ne stockez pas une valeur entière. Ce code:

filteroptions.Items.Insert(0, "Entire Project");

est probablement pas fait ce que vous pensez qu'il fait. Ceci est pas dire « ajouter une nouvelle listitem avec une clé de 0 et le texte « projet complet ». Il est plutôt dire insérer une nouvelle listitem à Position 0 avec la valeur et le texte du « Projet entier »

vous voulez probablement quelque chose comme,

filteroptions.Items.Insert(0, new ListItem("Entire Project", "0"));

Questions connexes