C# 向datagridview和数据库表添加列表项
我有一个带有值列表的列表框(列表框名称=RoleName)。根据列表框中的选择,这些值将添加到RoleName表中。但是,当我尝试添加时,它会添加正确数量的行,但始终是相同的值(第一个值)。标签1.Text在顶部显示正确的用户ID。我的循环有问题吗C# 向datagridview和数据库表添加列表项,c#,datagridview,listbox,C#,Datagridview,Listbox,我有一个带有值列表的列表框(列表框名称=RoleName)。根据列表框中的选择,这些值将添加到RoleName表中。但是,当我尝试添加时,它会添加正确数量的行,但始终是相同的值(第一个值)。标签1.Text在顶部显示正确的用户ID。我的循环有问题吗 private void button1_Click(object sender, EventArgs e) { SqlCommand cmdAdd = new SqlCommand("insert into
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();
}
}
您正在保存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();
}
非常感谢。我只是从RoleName.SelectedIndices改成了RoleName.SelectedItems,因为我错过了这一点,所以我把代码也改成了SelectedItems。