获取存储在 CheckBoxList 中 table 中的特定用户首选项作为选定项

Get particluar User Preferences stored in table in CheckBoxList as Selected

我将用户偏好值存储在 table 的一列中,由 , 示例分隔 Football,Tennis,Swimming,Hiking

Table 用户偏好

ID  USERID  Preferences
1   X1234   Football,Tennis,Swimming,Hiking
2   X2345   Cricket
3   X3456   Dancing,Reading
4   X4567   Games,Cricket,Tennis

首选项存储在 table 中,我需要在 asp.net 网络表单应用程序的 CheckBoxList 中将特定用户首选项显示为 Selected,以便用户可以看到他的首选项或在 [= =31=]想要

<asp:CheckBoxList ID="chkLstPrefences" runat="server" DataTextField="Preferences" DataValueField="Preferences" >

我不确定如何让它工作我正在读取用户偏好并将它们转换为字符串数组,但我不确定如何在 CheckBoxList

中匹配并向用户显示所选项目

例如用户 X1234

string sUserPreferences = "Football,Tennis,Swimming,Hiking"

string[] strAryUserPreferences = sUserPreferences.Split(',');

如何将 strAryUserPreferences 中的用户首选项与 CheckBoxList chkLstPrefences

中的值相匹配

我认为您可以将域绑定到您的复选框列表,然后遍历每个复选框列表项并验证是否在您的用户首选项中。 像这样的东西(对不起,如果它不完美,但我现在还没有visual studio)..

var userPreferences = sUserPreferences.Split(',').ToList(); 
chkLstPrefences.DataSource = preferencesDomain;
chkLstPrefences.DataBind();
foreach(var item in chkLstPrefences.Items)
    item.Selected = userPreferences.Contains(item.Text);

首先将列的值存储在某个列表中,然后循环遍历 ChkListPreference 的每个项目,将存储在 lstPrefList 中的每个值作为嵌套 for 循环,当任何值匹配时将其标记为在 ChkListPreference 中选择

// store value in lstPrefList
List<string> lstPrefList = ValuesFromDB;
  
if ((chkLstPrefences.Items.Count > 0) && (lstPrefList.Count > 0))
{
    for (int i2=0; i2 <chkLstPrefences.Items.Count; i2++)
    {
        for ( int i=0; i <lstPrefList.Count; i++)
        {
           if (chkLstPrefences.Items[i2].Value.ToString().Trim() == lstPrefList[i].ToString().Trim())
            {
                chkLstPrefences.Items[i2].Selected = true;
            }
        }
    }
}