首先是我的代码:
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)
我希望有人有个主意吗?
答案 0 :(得分:0)
如果您的项目是Asp.Net并且您在页面加载事件中填充了listBox控件,那么只需输入此控件:
if(!IspostBack)
this.LoadListBox(); //your fill method
因为,当您发布页面时,页面加载事件触发并再次填充listBox。所以你的选择正在结束。