I have a datagridview and I successfully am able to add and edit rows in my datagridview to sql database table. However , I'm having some trouble with delete. I COULD add a column with a delete checkbox option or use the UserDeletingRow event, but the way I have it set up, I would have to restructure my program and I'm trying to avoid that.
Here's what I did for the add and edit, and started the delete:
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmdAdd = new SqlCommand("insert into Josh_REL_Table (UserID, RoleName) Values (@UserID,@RoleName)", con);
SqlCommand cmdEdit = new SqlCommand("update Josh_Rel_Table SET UserID = @UserId, RoleName=@RoleName where RelationID=@RelationID", con);
SqlCommand cmdDelete = new SqlCommand("delete from Josh_Rel_Table where RelationID = @RelationID", con);
con.Open();
cmdAdd.Parameters.Add("@UserID", SqlDbType.VarChar);
cmdAdd.Parameters.Add("@RoleName", SqlDbType.VarChar);
cmdAdd.Parameters.Add("@RelationID", SqlDbType.VarChar);
cmdEdit.Parameters.Add("@UserID", SqlDbType.VarChar);
cmdEdit.Parameters.Add("@RoleName", SqlDbType.VarChar);
cmdEdit.Parameters.Add("@RelationID", SqlDbType.VarChar);
cmdDelete.Parameters.Add("@RelationID", SqlDbType.VarChar);
if (DGV1.RowCount >= 1)
{
for (int x = 0; x < DGV1.RowCount - 1; x++)
{
if (DGV1.Rows[x].Cells[0].Value.ToString() == "" || DGV1.Rows[x].Cells[0].Value == null)
{
cmdAdd.Parameters["@UserID"].Value = DGV1.Rows[x].Cells[1].Value.ToString();
cmdAdd.Parameters["@RoleName"].Value = comboBox1.Text;
cmdAdd.Parameters["@RelationID"].Value = DGV1.Rows[x].Cells[0].Value.ToString();
cmdAdd.ExecuteNonQuery();
}
if (!DGV1.Rows[x].IsNewRow)
{
cmdEdit.Parameters["@UserID"].Value = DGV1.Rows[x].Cells[1].Value.ToString();
cmdEdit.Parameters["@RoleName"].Value = comboBox1.Text;
cmdEdit.Parameters["@RelationID"].Value = DGV1.Rows[x].Cells[0].Value.ToString();
cmdEdit.ExecuteNonQuery();
}
if ()
{
//Deleting a row
}
}
MessageBox.Show("Record updated!");
con.Close();
}
}
If I were to use the event, it would be something like this....
private void DGV1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
SqlCommand cmdDelete = new SqlCommand("delete from Josh_Rel_Table where RelationID=@RelationID", con);
cmdDelete.Parameters.Add("@RelationID", SqlDbType.VarChar);
foreach (DataGridViewRow row in DGV1.SelectedRows)
{
if (!row.IsNewRow)
{
DGV1.Rows.Remove(row);
cmdDelete.Parameters["@RelationID"].
cmdDelete.ExecuteNonQuery();
}
}
}
"keycode" and "handled" are invalid in trying something like:
if (e.KeyCode == Keys.Delete && DGV1.CurrentCell.Selected)
{
DGV1.CurrentCell.Value = null;
e.Handled = true;
}
So how can I put the pieces together?
Aucun commentaire:
Enregistrer un commentaire