選択項目が複数選択listboxから区切りデータベースの文字列分野
-
22-08-2019 - |
質問
私形成のための試みが行われている"編集"ページでは、データベースに記録できる編集と保存のデータベースです。分野の一つにする複数を選択しlistboxめの適切なリスト項目にハードコードされたリストが読み込まれます。
C#、どうやって暮らすマルチ-選択listboxを適切な項目選択--に基づき、カンマ区切りで文字列データベースから取り出します。私の研究は数ソリューションを伴わループができていないような仕限定C#キャリアやスキルアップ.
これらはすべて今、私は滞っております。だな勘定のための複数の値を文字列になります。ある機能などを含んでいることを確認できますが、値のマッチ?んだ一(おそらく基本的なC#理論、符号です。
int i;
for (i = 0; i <= CATEGORYListBox.Items.Count - 1; i++)
{
if (reader["CATEGORY"].ToString() == CATEGORYListBox.Items(i).Value)
{
CATEGORYListBox.Items(i).Selected = True;
}
}
...
<asp:ListBox ID="CATEGORYListBox" runat="server">
<asp:ListItem Value="Circulation">Circulation</asp:ListItem>
<asp:ListItem Value="Interactive Media">Interactive Media</asp:ListItem>
<asp:ListItem Value="Classified">Classified</asp:ListItem>
<asp:ListItem Value="Publishing">Publishing</asp:ListItem>
<asp:ListItem Value="Editorial">Editorial</asp:ListItem>
<asp:ListItem Value="Retail">Retail</asp:ListItem>
</asp:ListBox>
ります。
解決
これは、ブルートフォースと醜いですが、それは動作するはずです。上記のコードはVBとC#の間雑種のいくつかの並べ替えであるように見えます。以下のコードはC#です。また、あなたの分離コードのの中であなたのADO.Netをしていない検討します。
for (int i = 0; i < CATEGORYListBox.Items.Count; i++)
{
foreach (string category in reader["CATEGORY"].ToString().Split(','))
{
if (category != CATEGORYListBox.Items[i].Value) continue;
CATEGORYListBox.Items[i].Selected = true;
break;
}
}
他のヒント
私は、これらの線に沿って何かを示唆しています。これは、ネストされたループを行うよりも、より読みやすいようです。
List<string> categories = new List<string>(reader["CATEGORY"].ToString().Split(','));
foreach (ListItem item in CATEGORYListBox.Items)
{
if (categories.Contains(item.Value))
item.Selected = true;
}
最も簡単な実装?
string sequenceFromDBorPostBack= "1,3,4,6,48";
foreach (ListItem item in lstLocations.Items)
{
item.Selected = sequenceFromDBorPostBack.Split(',').Contains(item.Value);
}
い場合には性能の効果的な..
問題の別の解決策はあります:
string[] arrSplitItems;
arrSplitItems = TestsOrdrd.Split(',');
if (arrSplitItems.Length > 0)
{
for (int iCount = 0; iCount < arrSplitItems.Length; iCount++)
{
lstTestcode.Items.FindByValue(arrSplitItems[iCount].ToString()).Selected = true;
}
}
TestsOrdrdは、リストボックスの選択した値が含まれています。
おかげで、 Rathika Krishnavelu
ListBox1.SelectionMode = ListSelectionMode.Multiple;
string[] pageRoles = myReader["UserProfile"].ToString().Split(',').ToArray();
pageRoles.ToList().ForEach(r => ListBox1.Items.FindByValue(r).Selected = true);
所属していません StackOverflow