12
votes

Comment puis-je obtenir la liste de coasser des valeurs sélectionnées, ce que j'ai ne semble pas fonctionner c # .NET / VisualwebPart

Je crée une liste de coasser dans un fichier de classe et j'utilise un HTMLTextWriter pour rendre le contrôle.

J'utilise le code suivant pour stocker les valeurs sélectionnées dans une chaîne: p> xxx pré>

J'ai emprunté le code et il ne semble pas frapper l'intérieur de La déclaration IF et l'attribut de valeur sélectionnée sont fausses à chaque fois ... Tout le monde a une idée de la façon dont je peux résoudre ce problème? P>

Je le peuplie en utilisant les éléments suivants: P>

 YrChkBox.Items.Add(new ListItem("Item 1", "Item1"));


2 commentaires

Ce code devrait fonctionner .. Quel événement avez-vous ce code placé sous vous aussi yrchkbox.items.count a une valeur ... ??


Sur clic; La réponse à la déclaration si elle semble toujours être fausse. Ceci est dans un fichier de classe cependant, les publications ont-elles quelque chose à voir avec cela?


6 Réponses :


5
votes

Essayez quelque chose comme ceci:

foreach (ListItem listItem in YrChkBox.Items)
{
    if (listItem.Selected)
    { 
       //do some work 
    }
    else 
    { 
      //do something else 
    }
}


2 commentaires

@Kraze exactement ce que j'ai en ce moment. Sauf que je l'ai dans une boucle pour la boucle, je l'ai essayé avec votre syntaxe et oui, c'est en fait la même chose mais j'aime votre syntaxe plus, je vais le garder lol +1


Ahh je vois ce que tu dis, oui tu as raison, je ne faisais pas ça. Je souhaite vraiment que cela a aidé si t_t j'ai le même problème .. Je pense que c'est parce que mon bouton n'est pas serveride



27
votes

Dans votre page ASPX, vous avez la liste comme celle-ci: xxx

dans votre code derrière la page ASPX.CS, vous avez ceci: xxx

Assurez-vous d'utiliser le si (! ispostback) {} car si vous le chargez chaque page actualisée, il détruit réellement les données.


4 commentaires

Je ne l'ai pas dans la marque du tout. Je l'ai dans un écrivain de texte. Donnez-moi une seconde, je collerai mon code pour cette partie.


Ahh je vois ce que vous dites, ajoutez les valeurs sélectionnées à une liste comme elles sont sélectionnées ... Je vais essayer que je suis inquiet de recharger la page à chaque utilisateur sélectionne une case à cocher


Vous pouvez supprimer la pièce Autopostback = "true" de la page ASPX, et elle devrait se comporter de la même manière sur un événement post-retour à partir d'un autre événement tel qu'une touche Presse. C'était juste pour un exemple.


Je ne peux pas sembler ajouter un contrôle côté serveur dans Code-Ber et ajouter le rendu via HTMLTextWriter ... Des idées sur la façon dont je peux le faire. J'ai vraiment besoin de pouvoir récupérer les valeurs sélectionnées de la liste Cochez la case, merci pour votre aide +1



3
votes

Case à cocher Valeurs sélectionnées avec séparateur
 string items = string.Empty;
        foreach (ListItem i in CheckBoxList1.Items)
        {
            if (i.Selected == true)
            {
                items += i.Text + ",";
            }
        }
        Response.Write("selected items"+ items);


0 commentaires

0
votes

// page.aspx //
xxx

// page.aspx.cs // xxx


0 commentaires

-1
votes

// aspx.cs

// chargez-vous Cochez les éléments sélectionnés dans la liste xxx


0 commentaires

3
votes

Un moyen élégant de mettre en œuvre serait de faire une méthode d'extension, comme ceci: xxx

i peut ensuite utiliser quelque chose comme celui-ci pour composer une chaîne toutes les valeurs sont toutes des valeurs séparées par "; : xxx


0 commentaires