2010-01-28 63 views
1

我有50個複選框,用於50個美國州。用戶可以選擇全部50個或只有1個(基本上任何他想要的數字)。基於他的選擇,我想插入或更新sql server 2008中的表。例如,如何將多個複選框值保存在vb.net中或for循環中

color = blue和chk1 = check,chk2 = check和chk3 = check(chk = checkbox)。現在用戶想要爲此添加10個更多狀態,或者刪除這3個並添加5個狀態。所以你基本上明白了。數據庫中的表看起來像這樣 - ID Color State_id有一個名爲states的表,所以stateid應該從那裏來。那麼我如何做一個循環插入或在vb.net更新?

+0

這是Windows窗體,ASP.NET或其他? – 2010-01-28 23:47:13

+0

asP.net與VB.net代碼 – reger 2010-01-28 23:55:54

+0

更新了我的答案 – Fredou 2010-01-29 00:06:44

回答

-1

我會用位運算和.NET中變量(以枚舉混合旗)

一個字段中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 
+0

你可以解釋更多或給一個鏈接,我可以閱讀一個例子? – reger 2010-01-28 23:52:26

+0

給我幾分鐘來創建一個小例子 – Fredou 2010-01-28 23:53:40

0

我會使用數據源和checkboxlist。您已將狀態置於數據表中,使用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執行插入操作或原子進行插入操作。有幾種方法可以實現它,但這可能是在給出所描述的數據結構的情況下遍歷項目的最簡單方法。

0

在這種情況下,我有時也去簡單的方法,並刪除所有用戶的項目在數據庫中存儲,然後只做插入。

這可能是一個問題,如果你有例如insert_date。在這種情況下,您需要列出用戶選擇的選項。在新列表中循環,如果在舊列表中未找到該項目,則爲插入。在舊列表中循環,如果在新列表中未找到該項目,則它是刪除。

相關問題