2010-01-28 2 views
1

J'ai 50 cases à cocher pour 50 états américains. L'utilisateur peut choisir tous les 50 ou seulement 1 (donc fondamentalement tout nombre qu'il veut). En fonction de son choix, je souhaite insérer ou mettre à jour la table dans le serveur SQL 2008. e.g-comment enregistrer plusieurs valeurs de case à cocher en une fois ou pour une boucle en vb.net

Couleur = bleu et chk1 = vérifier, chk2 = vérifier et chk3 = vérifier (chk = case à cocher). maintenant l'utilisateur veut ajouter 10 états à ceci ou enlever ces 3 et ajouter 5 plus. Donc, fondamentalement, vous avez l'idée. la table dans la base de données ressemble à ceci - ID Color State_id il y a une table appelée states, donc l'état doit venir de là. Alors, comment puis-je faire une insertion de boucle ou mettre à jour dans vb.net?

+0

Est-ce Windows Forms, ASP.NET ou autre chose? –

+0

asP.net avec le code VB.net – reger

+0

a mis à jour ma réponse – Fredou

Répondre

-1

J'utiliser et un fonctionnement au niveau du bit à long variable .net (mélangé avec un ENUM pour le drapeau)

un champ dans la db et moyen plus facile de jouer avec ce que l'utilisateur de sélectionner

petit échantillon

Enum state As Long '64 enum maxium since long = 64 bits 

ALABAMA = 1 
ALASKA = 2 
NEVADA = 4 
ARIZONA = 8 
ARKANSAS = 16 
CALIFORNIA = 32 
COLORADO = 64 
CONNECTICUT = 128 
DELAWARE = 256 
'etc etc etc 

End Enum 

Module Module1 

Sub Main() 
    Dim userselect As state = 0 

    Console.WriteLine("your checked box state") 
    Console.WriteLine("in this case im using the order of the enum for selecting") 
    Dim checkbox = New Boolean() {True, False, False, True, False, False, True, False, False} 

    For i = 0 To checkbox.Length - 1 
     userselect = CType(userselect + If(checkbox(i), (2^(i + 1)), 0), state) 
    Next 

    For Each s As state In [Enum].GetValues(GetType(state)) 
     If (userselect And s) > 0 Then 
      Console.WriteLine("selected " & s.ToString) 
     End If 
    Next 

    Console.WriteLine("Value of userselect is " & userselect.ToString) 

    Console.ReadKey() 

End Sub 

End Module 

OUTPUT: 

selected NEVADA 
selected ARIZONA 
selected COLORADO 
Value of userselect is 76 
+0

pourriez-vous expliquer plus ou donner un lien que je pourrais lire avec un exemple? – reger

+0

donnez-moi quelques minutes pour créer un petit exemple – Fredou

0

J'utiliserais une source de données et une liste de contrôle. Vous avez déjà vos états dans un datatable, remplissez une checkboxlist avec une sélection de databound à partir d'un SqlDataSource (ou datable de votre choix). Ensuite, lorsque vous cliquez sur le bouton juste itérer à travers la boucle suivante:

Dim dt as New myTypedDataTable ' constructed from datasource 

Dim color as String = "Blue" ' Filled however you set color 

For Each item As ListItem In Me.CheckBoxList1.Items 
    If item.Selected Then 
     Dim row as myTypedDataTableRow = dt.NewmyTypedDataTableRow 
     row.Color = color 
     row.State_id = item.Value 
     dt.Rows.Add(row) 
    End If 
Next 

Une fois que vous avez le datatable rempli avec les lignes en question, vous pouvez soit utiliser le SqlDataSource pour effectuer une opération d'insertion ou d'effectuer l'opération d'insertion atomiquement . Il y a plusieurs façons de l'accomplir, mais c'est probablement le moyen le plus simple de parcourir les éléments en fonction de la structure de données que vous avez décrite.

0

Dans ce contexte, je vais parfois la facilité et supprimer tous les éléments d'utilisateur stockés dans la base de données, puis seulement insérer.

Cela peut être un problème si vous avez par exemple un insert_date. Dans ce cas, vous devez répertorier les options sélectionnées par l'utilisateur. Boucle dans la nouvelle liste, si l'élément n'est pas trouvé dans l'ancienne liste, alors c'est un insert. Boucle dans l'ancienne liste, si l'élément n'est pas trouvé dans la nouvelle liste, alors c'est une suppression.

Questions connexes