می‌تونید از رویداد RowDataBound دیتاگریدویو استفاده کنید. در این رویداد ، می‌تونید مقادیر ستون مورد نظر را بر اساس ترتیب دلخواه خود تنظیم کنید.
اول ، باید کمبوباکس دسته‌ها را پر کنید و بعد از انتخاب هر دسته ، ترتیب مربوط به آن دسته را بر روی ستون خط دیتاگریدویو تنظیم کنید. می‌تونید از دستورات LINQ برای مرتب‌سازی داده‌ها استفاده کنید.
ستون خط برای نگهداری ترتیب مورد نظر استفاده می‌شه . این مثال و با ساختار برنامتون شخصی سازی کنید . امیدوارم مفید واقع بشه
private void dataGridView1_RowDataBound(object sender, DataGridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// دریافت مقدار دسته از سلول مورد نظر
string category = e.Row.Cells["دسته"].Value.ToString();


// محاسبه ترتیب بر اساس دسته
int[] order = { 3, 4, 2, 5, 1, 6 };


// تنظیم مقدار جدید برای ستون خط
e.Row.Cells["خط"].Value = order[Array.IndexOf(order, int.Parse(category))];
}
}