2014-01-16 26 views
1

我有一个CheckBoxList需要从由:分隔的SQL Server数据库填充。CheckBoxList C#SQL Server数据库中用“:”分隔的值

aspx页面

<asp:CheckBoxList ID="chkTopics" runat="server" CssClass="ChkList"> 
<asp:ListItem Value="ABC">ABC</asp:ListItem> 
<asp:ListItem Value="D-E-F">D-E-F</asp:ListItem> 
<asp:ListItem Value="GHI">GHI</asp:ListItem> 
<asp:ListItem Value="J,K,L">J,K,L</asp:ListItem> 
<asp:ListItem Value="MNO">MNO</asp:ListItem> 
<asp:ListItem Value="PQR">PQR</asp:ListItem> 
</asp:CheckBoxList> 

上的.cs页什么,我如何得到的值:

SqlConnection conn = null; 
conn = new SqlConnection(conn_string); 

SqlCommand sqlCommand = new SqlCommand("aspnet_GetAnswers", conn); 
sqlCommand.CommandType = CommandType.StoredProcedure; 

conn.Open(); 

SqlDataReader rdr = sqlCommand.ExecuteReader(); 

if (rdr.Read()) 
{ 
    FirstName.Text = rdr.GetValue(2).ToString(); 
    LastName.Text = rdr.GetValue(3).ToString(); 
--> Putting the Code here to read the values and check the values that match. 
} 

rdr.Close(); 
conn.Close(); 
conn.Dispose(); 

从数据库:

rdr.GetValue(9)的ToString ();

ABC:GHI:J,K,L:

+1

那么,你有什么问题:导致空项,可以使用StringSplitOptions.RemoveEmptyEntries选项删除它们?你是说你不知道如何“分裂”一个“字符串”?这是一个暗示。 –

回答

0

喜欢这个

string str = GetValue(9).ToString().TrimEnd(':'); 
string[] strList = str.Split(':'); 


foreach (string s in strList) 
     { 
      foreach (ListItem item in chkTopics.Items) 
      { 
       if (item.Value == s) 
       { 
        item.Selected = true; 
        break; 
       } 

      } 

     } 
+0

但是其他的没有出现。数据库中的需要被选中。 – mrmcg

+0

检查更新后的答案。我以为你想从数据库中显示。 –

1

修剪最后一个冒号:

string trimmedString = optionsStringFromDb.TrimEnd(':'); 

获取选项列表:

List<string> myOptions = trimmedString.Split(':').ToList(); 

然后填充您的CheckBoxList:

foreach (string option in myOptions) 
{ 
    chkTopics.Items.Add(new ListItem(option)); 
} 
+0

你在这里展示的东西看起来不正确。 – mrmcg

+0

@mrmcg你是什么意思“似乎不流”?你将必须更具体。 – nestedloop

+0

@mrmcg现在好了吗? 'optionsStringFromDb只是一个通用的名字(用你持有查询结果的字符串来代替) – nestedloop

1

您可以在结肠做一个string.Split(),然后创建每个LineItem并直接将它们添加到CheckBoxList

var result = rdr.GetValue(9).ToString(); 
chkTopics.Items.AddRange(result.Split(':') 
           .Select(x => new ListItem { Text = x, Value = x}) 
           .ToArray()); 

如果有一个机会,你就会有额外的冒号那会

.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries 
+0

检查了这一个,它不会选择任何东西。 – mrmcg

+0

在将它们添加到CheckBoxList之前尝试存储'result.Split(':')... ToArray()'在一个单独的变量中,然后在该变量上放置一个断点并仔细检查该值是什么(以及值的结果是)。 –

相关问题