سلام.
همونطور که دوستمون هم گفتن تغییر id جدولتون کار صحیحی نیست چراکه کلید اصلی این جدول ممکنه برای جداول دیگه در نقش کلید خارجی بکار رفته باشه که تغییر id میتونه مشکلات زیادی رو براتون ایجاد کنه. توصیه من به شما این هست :
موقع سلکت زدن از تابع Row_Number برای تولید شماره سطر برای رکوردهاتون استفاده کنید و زمانیکه رکوردی رو حذف می کنید، کافیه همین ستون شماره سطر رو از طریق دیتایتبل (یا دیتاست) ویرایش کنید یا مستقیما ویرایش رو بر روی ستون گرید اعمال کنید (در رکوردهای زیاد اصلا توصیه نمیشه چون سرعت رو میاره پایین، پس بهتره شی منبعی (دیتایتبل) رو که به گرید وصل میکنید مورد ویرایش قرار بدید).
برای Select می تونید از کوئری زیر استفاده کنید :
select *,ROW_NUMBER() over(order by id ) as radif from person
کوئری بالا علاوه بر برگشت تمام ستون های جدول person، یک ستون هم با نام radif بر میگردونه که در واقع شماره سطر هستش.
حالا زمانیکه میخواید یک سطر رو حذف می کنید، مقدار ستون radif رو برای سطری که می خواید حذف کنید، بردارید و دیتاتیبل رو به شکل زیر فیلتر و دوباره به گرید متصل کنید :
int RadifDeleted = Convert.ToInt32(dataGridView1.CurrentRow.Cells["radif"].Value);
// دستورات حذف رو در این قسمت بنویسید
dt.DefaultView.RowFilter = "radif Not IN(" + RadifDeleted + ")";
dt = dt.DefaultView.ToTable();
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["radif"] = i + 1;
}
dataGridView1.DataSource = dt;
موفق باشید.