将列表项添加到数据网格视图和数据库 table

Add list items to datagridview and database table

我有一个包含值列表的列表框(列表框名称 = RoleName)。根据列表框中的选择,这些值被添加到 RoleName table。但是,当我尝试添加时,它添加了正确的行数,但一直向下添加相同的值(第一个值)。 label1.Text 在顶部显示正确的用户 ID。我的循环有问题吗?

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();
            }