2016-07-26 3 views
0

J'essaie d'obtenir la valeur sélectionnée de ma case à cocher (ne parle que d'un seul résultat/vérification), je veux obtenir cette valeur sur l'événement onClick sur mon bouton, et non seulement je coche aussi J'ai deux listes déroulantes que je prends aussi la valeur sélectionnée, et quand je clique sur mon bouton, j'obtiens les valeurs des listes déroulantes et je ne peux pas obtenir la valeur de checkboxlist et je ne sais pas pourquoi parce que je l'ai déjà défini au chargement de la page source et eveything semble bien regarder, mais je ne peux pas obtenir la valeur:/C# ASP.NET Case à cocher sélectionnée valeur unique

Voici le code:

protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     var dropDown_one= Convert.ToInt32(dropOne.SelectedValue); //THIS IS OK 
     var dropDown_two = Convert.ToInt32(dropTwo.SelectedValue);//THIS IS OK 
     var checkBox = Convert.ToInt32(checkBox.SelectedValue); //<- here I got error, because I am trying to convert "" value to int 

    } 

et chargement de la page I thi a fait s:

checkBox.DataSource =SomethingFromDatabase(); 
     checkBox.DataTextField = "Name"; 
     checkBox.DataValueField = "ID"; 
     checkBox.DataBind(); 

alors je suis les valeurs de base de données et je suis en mesure de les vérifier, mais quand je clique sur mon bouton j'ai eu erreur parce que CheckBoxList dit que sa valeur est « » alors que je ne sélectionne rien, même si Je l'ai ..:/

Merci les gars, Vive

Répondre

0

Le gestionnaire d'événements Page_Load est exécuté sur chaque publication. Si vous appelez votre code de liaison de données à chaque fois, la CheckBoxList est effacée et rechargée et les sélections que vous avez effectuées sont perdues.

La solution à ce problème est de lier les données à l'intérieur d'un bloc conditionnel if (!IsPostBack):

void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     checkBox.DataSource = SomethingFromDatabase(); 
     checkBox.DataTextField = "Name"; 
     checkBox.DataValueField = "ID"; 
     checkBox.DataBind(); 
    } 
} 
+0

Je suppose que c'est une réponse à ce problème, mais je vais essayer bientôt quand je reviendrai à la maison et je vais laisser une réponse si c'est ok! et marquez-le comme une réponse :) Merci –

+0

C'était la réponse! Merci beaucoup @ConnorsFan! :) –

0

Vérifiez si la case est pas dans l'état désactivé car elle retourne NULL dans un état désactivé et le convertir en Int va jeter l'erreur. Donc, vérifiez la valeur de la case à cocher NULL et convertissez-la.