شما به جای اینکه از این استفاده کنی میتونی
dg.Rows.Add(code, name, address, sb, creatdata, imd, accessdata);
از این روش استفاده کنی اول یه datatable به عنوان واسط بسازی و اسم خونه ها رو رهش بدی و بعد بعد ردیف ها Row رو بهش اضافه کنی.
DataRow tempRow;
DataTable tempdt = new DataTable();
tempdt.Columns.Add("column name", typeof(type name));
tempRow = tempdt.NewRow();
tempRow[0] = ObjectTypeValue;
tempdt.Rows.Add(tempRow);
اینجوری خیلی راحت تره و میتونی رو خونه ها هم چون توی یه دیتا تیبل هس کنترل داشته باشی و تغییر بدی.
اگر توی یه حلقه بود هر بار که میخای یه ردیف جدید row ایجاد کنی باید از
r = dt.newrow()
استفاده کنی و گرنه هی میگه این ردیف توی دیتا تیبل وجود داره