Don't. ID's should not have to be sequential, they should be unique. If you change ID values, then any data which was not removed relating to the old ID will be associated with the new instead, and that can cause massive data integrity problems which are a nightmare to sort out later.
Why are you even displaying the ID's at all? Generally, the user doesn't need to know what they are, so they are normally a hidden row in a DGV anyway!
Two other things:
1) Indent your code! It's much easier to read, modify, and understand it it's indented - VS will do it for you automatically!
2) Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Always use Parameterized queries instead.
When you concatenate strings, you cause problems because SQL receives commands like:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
The quote the user added terminates the string as far as SQL is concerned and you get problems. But it could be worse. If I come along and type this instead: "x';DROP TABLE MyTable;--" Then SQL receives a very different command:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;
Which SQL sees as three separate commands:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
A perfectly valid SELECT
DROP TABLE MyTable;
A perfectly valid "delete the table" command
And everything else is a comment.
So it does: selects any matching rows, deletes the table from the DB, and ignores anything else.
So ALWAYS use parameterized queries! Or be prepared to restore your DB from backup frequently. You do take backups regularly, don't you?