Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在vb.net中的while或for循环中保存多个复选框值_Database_Vb.net_Checkbox - Fatal编程技术网

Database 如何在vb.net中的while或for循环中保存多个复选框值

Database 如何在vb.net中的while或for循环中保存多个复选框值,database,vb.net,checkbox,Database,Vb.net,Checkbox,我有美国50个州的50个复选框。用户可以选择全部50或仅1(因此基本上可以选择他想要的任何数字)。根据他的选择,我想在SQLServer2008中插入或更新表。e、 g- 颜色=蓝色,chk1=检查,chk2=检查,chk3=检查(chk=复选框)。现在,用户希望在该列表中添加10个以上的状态,或者删除这3个,再添加5个。所以你基本上明白了。数据库中的表看起来像这个-ID颜色State\u ID有一个名为states的表,所以stateid应该来自那里。那么如何在vb.net中执行循环插入或更新

我有美国50个州的50个复选框。用户可以选择全部50或仅1(因此基本上可以选择他想要的任何数字)。根据他的选择,我想在SQLServer2008中插入或更新表。e、 g-


颜色=蓝色,chk1=检查,chk2=检查,chk3=检查(chk=复选框)。现在,用户希望在该列表中添加10个以上的状态,或者删除这3个,再添加5个。所以你基本上明白了。数据库中的表看起来像这个-ID颜色State\u ID有一个名为states的表,所以stateid应该来自那里。那么如何在vb.net中执行循环插入或更新呢?

我将在.net中使用按位操作和long变量(与标志的枚举混合使用)

db中的一个字段,用户选择的内容更容易播放

小样本

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

我会使用一个数据源和一个复选框列表。您的状态已经存在于数据表中,请使用SqlDataSource(或您自己选择的数据表)中的数据绑定选择填充复选框列表。然后,单击按钮时,只需迭代以下循环:

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

在数据表中填充了有问题的行之后,可以使用SqlDataSource执行插入操作,也可以原子地执行插入操作。有几种方法可以实现它,但这可能是迭代给定数据结构的项的最简单方法。

在本文中,我有时会采用简单的方法删除数据库中存储的所有用户项,然后只执行插入操作


例如,如果您有一个插入日期,这可能会是一个问题。在这种情况下,您需要列出用户选择的选项。在新列表中循环,如果在旧列表中找不到该项,则它是一个插入项。在旧列表中循环,如果在新列表中找不到该项,则该项将被删除。

这是Windows窗体、ASP.NET还是其他内容?ASP.NET与VB.NET代码为什么此问题与其他用户提出的问题完全相同?-@比尔:你怎么会因为在两边都发表同样的评论而得票呢:)这不公平。你能解释得更多吗?或者给我一个链接,我可以用一个例子来读吗?给我几分钟时间来创建一个小例子