C# 所选列表项未被识别为所选

C# 所选列表项未被识别为所选,c#,if-statement,listbox,selected,listitem,C#,If Statement,Listbox,Selected,Listitem,首先,这是我的代码: foreach (ListItem l in l_roles.Items) { if (l.Selected) { SqlCommand find_r = new SqlCommand("SELECT id FROM roles WHERE rolename=@rolename", conn);

首先,这是我的代码:

foreach (ListItem l in l_roles.Items)
                {
                    if (l.Selected)
                    {
                        SqlCommand find_r = new SqlCommand("SELECT id FROM roles WHERE rolename=@rolename", conn);
                        find_r.Parameters.AddWithValue("@rolename", l.Text);
                        f = find_r.ExecuteScalar().ToString();

                        SqlCommand fill_g_r = new SqlCommand("INSERT INTO groups_roles (group_id, role_id) VALUE (@group_id, role_id)", conn);
                        fill_g_r.Parameters.AddWithValue("@group_id", l_gr_id.Text);
                        fill_g_r.Parameters.AddWithValue("@role_id", f);
                        fill_g_r.ExecuteNonQuery();
                    }


                }
当我在调试模式下测试这段代码时,在列表框中选择一个项目并点击按钮,什么也没发生

如果我在“foreach”的末尾设置断点,我可以看到:

if (l.Selected)
这是错误的。

l.Text
是我以前选择的正确列表项。 我还尝试了其他可能性,如:

if(!l.selected) or if(l.selected == true)

我希望任何人都有想法?

如果您的项目是Asp.Net,并且您在页面加载事件中填充了listBox控件,只需放置此控件:

if(!IspostBack)
 this.LoadListBox(); //your fill method

因为,当您发布页面时,页面加载事件会触发并再次填充您的列表框。所以您的选择正在清除。

如果(!l.selected)或如果(l.selected==true)
应该是
如果(!l.selected | | l.selected==true)
在c中#不,我不是指编程上的“或”:)我只是尝试了这两个选项