将列表项添加到datagridview和数据库表

时间:2015-03-04 18:53:54

标签: c# datagridview listbox

我有一个列表框,其中包含值列表(列表框名称= 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();
            }
}

1 个答案:

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