2014-12-07 111 views
3

比較CheckBoxList的值,我不知道如果我想是可以的,但到目前爲止,我還沒有運氣...保存/恢復/從DB

我使用Visual Studio,asp.net和SQL。在varchar(max)類型的表中的一個字段...

我想要做的是將CheckBoxList的值保存到數據庫中,並檢索它們以在SQL命令中比較它們以過濾表中的幾個值數據庫。

很容易理解,當我舉一個例子:

所以我在代碼的HTML邊有這些。

<asp:CheckBoxList ID="CheckBoxList1" runat="server" onselectedindexchanged="CheckBoxList1_SelectedIndexChanged"> 
     <asp:ListItem Value="1">Sales</asp:ListItem> 
     <asp:ListItem Value="2">Administration</asp:ListItem> 
     <asp:ListItem Value="3">Help</asp:ListItem> 
</asp:CheckBoxList> 

這代碼來保存數據

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     TextBox20.Text = ""; 
     string s = null; 

     for (int i = 0; i < CheckBoxList1.Items.Count; i++) 
     { 
      if (CheckBoxList1.Items[i].Selected) 
       s += CheckBoxList1.Items[i].Value + ","; 

      TextBox20.Text = s; 
     } 
    } 

現在,當某一個選擇像兩個選項,例如SalesAdministration,我想的值1,2被存儲在數據庫中單列。

然後使用具有Sales或Administration/Sales和Administration的SQL顯示行檢索值。

我不知道我是否正在以正確的方式進行..但任何幫助將不勝感激....我讀了創建一個表,我需要的所有值是他們正確的方式..但我說不上來它是如何工作..

+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線和點擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以精確地格式化和語法突出顯示它! – 2014-12-07 19:16:23

+0

這就是我所做的,不知道出了什麼問題..事情是如此搞砸了...謝謝你糾正它.. – Rifshan 2014-12-07 19:18:23

+1

提示:將多個值存儲在一個列(「1,2」)通常是一個壞主意。這會使查詢稍後複雜化,例如找到所有工程師而不是銷售人員的管理員。使用單獨的表格,例如'UserRoles',並將其與'User'數據結合是一種常見的方法。 – HABO 2014-12-07 19:31:35

回答

1

首先,我會建議使用StringBuilder類的做一個循環中字符串連接,因爲它是更有效 -

對於執行大量的字符串操作例程(例如作爲在循環中多次修改字符串的應用程序),重複修改字符串可能會導致嚴重的性能損失。另一種方法是使用StringBuilder,它是一個可變的字符串類。

MSDN StringBuilder Class Documentation

我上面由哈勃提出的意見一致,在一列存儲逗號分隔值幾乎總是一個壞主意。您應該創建一個名爲User的類。給予用戶類屬性,如「名稱」和「角色」。

關於這個數據的數據庫結構,我再次同意HABO,推薦兩個表。用戶和用戶角色。在用戶表中,您可以存儲數據,如Id,用戶名,年齡等,然後您可以在UserRoles表中存儲UserId(User表中的Id),這樣用戶可以分配多個角色。

如果您想了解更多的細節隨時問,我會盡力,並提供示例模式等

+0

我覺得我這樣做完全是錯誤的方式...我現在得到的概念...如果任何人都可以發佈一個在asp.net中使用checkboxlist/database的例子,這將是非常有幫助的。 – Rifshan 2014-12-08 03:09:27

+0

你能給關於你如何與數據庫交互的更多信息? (例如你使用實體框架?) – MaxRev17 2014-12-08 12:13:19

+0

對不起,我不知道它是什麼...我使用Visual Studio 2010中的內置SQL數據庫系統,我認爲它被稱爲SQL Express – Rifshan 2014-12-08 16:36:32