نوشته شده توسط
siedmohsen
سلام دوست عزیز
من از این روش استفاده می کنم نمیدونم بهینه هس یا نه !!!!!!!!!!!!!!
ابتدا id رو از DGV به دست میارم
dataGridView1.CurrentRow.Cells[0].Value.ToString();
بعدش اون id رو به فرم بعدی میفرستم
حالا با به Select ساده میشه به داده ها دسترسی داشته باشی
همواره موفقو پیروز باشی
سلام
یا نه!!!!!!!!
ببینید دیتابیس یخچال خونه مون نیست که هر دقیقه بریم درشو باز کنیم یه نگاه بندازیم. شما وقتی در یه فرم اطلاعات رو توی دیتاگریدویو لود کردید، بعد از اون با استفاده از پراپرتی که تعریف می کنید می تونید اطلاعات روی به فرم بعدی بفرستید و دیگه نیازی نیست دوباره Select داشته باشید.
فرض کنید دیتاگریدویو دو تا ستون داره یکی id و یکی nam، توی فرم اصلی میاید دو تا متغیر تعریف می کنید به شکل زیر:
int _id;
string _nam;
خب حالا با دابل کلیک روی سطر دیتاگرید ویو این متغیرها مقدار میگیرن و فرم جدید هم باز میشه، مثلاً در رویداد CellMouseDoubleClick یا رویدادی که دوستمون گفتند کدهای زیر رو می نویسید:
_id = Int32.Parse(dataGridView1.CurrentRow.Cells["id"].Value.ToString());
_nam = dataGridView1.CurrentRow.Cells["nam"].Value.ToString();
form2 f2=new form2();
f2.Id = _id;
f2.Nam = _nam;
f2.ShowDialog();
خب اگه برنامه اجرا بشه از دو خطی که پراپرتی های فرم 2 مقدار دهی شدن خطا می گیره چون هنوز پراپرتی های فرم 2 رو ننوشتیم پس توی فرم دوم باید این دو تا فیلد رو به صورت پراپرتی تعریف کنیم:
int _id;
string _nam;
public int Id { get { return _id; } set { _id = value; } }
public string Nam { get { return _nam; } set { _nam = value; } }
(چون خود فرم ها یک پراپرتی به اسم Name دارن ما اسم پراپرتی مون رو Nam گذاشتیم)
خب فقط یه کار می مونه اون که توی لود فرم دوم تکست باکس ها و ... مقدار بگیرن پس توی رویداد لود فرم دوم می نویسیم:
txtId.Text = _id.ToString();
txtName.Text = _nam;