我有一个列表框,其中包含值列表(列表框名称= RoleName)。根据列表框中的选择,这些值将添加到RoleName表中。但是,当我尝试添加时,它会添加正确的行数,但是相同的值(第一个值)会一直向下。 label1.Text在顶部显示正确的UserID。我的循环有问题吗?
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmdAdd = new SqlCommand("insert into Josh_REL_Table (UserID, RoleName) Values (@UserID , @RoleName)", con);
DataGridViewRow row = new DataGridViewRow();
con.Open();
cmdAdd.Parameters.Add("@UserID", SqlDbType.VarChar);
cmdAdd.Parameters.Add("@RoleName", SqlDbType.VarChar);
foreach (var i in RoleName.SelectedIndices)
{
cmdAdd.Parameters["@UserID"].Value = label1.Text;
cmdAdd.Parameters["@RoleName"].Value = RoleName.SelectedItem;
cmdAdd.ExecuteNonQuery();
}
}
答案 0 :(得分:0)
您正在保存SelectedItem而不是循环中的每个项目。查看以下评论
foreach (var currentItem in RoleName.SelectedItems)
{
cmdAdd.Parameters["@UserID"].Value = label1.Text;
cmdAdd.Parameters["@RoleName"].Value = currentItem // Or i in your code.
//RoleName.SelectedItem; selected item is always same.
cmdAdd.ExecuteNonQuery();
}