質問

私形成のための試みが行われている"編集"ページでは、データベースに記録できる編集と保存のデータベースです。分野の一つにする複数を選択し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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top