PDA

View Full Version : سوال: کلیک کردن روی رکورد دیتا گرید و ویرایش آن رکورد



سعید کشاورز
چهارشنبه 01 آذر 1391, 22:23 عصر
سلام دوستان.
من یه DGV دارم که میخام وقتی روی هر رکورد اون دابل کلیک کردم یه فرم باز بشه و فیلدهای اون رکورد توی تکست باکس نمایش داده بشه که کاربر بتونه اونارو ویرایش کنه..
کسی نمونه کد داره کمکم کنه؟

veniz2008
چهارشنبه 01 آذر 1391, 22:38 عصر
سلام. میتونید از رویداد RowHeaderMouseDoubleClick مربوط به گرید استفاده کنید. این رویداد زمانی فعال میشه که در ابتدای هر سطر دابل کلیک کنید.

private void GrdVisitID_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
TxtVisitID.Text = GrdVisitID.CurrentRow.Cells["visitid"].Value.ToString();
TxtVisitName.Text = GrdVisitID.CurrentRow.Cells["visitname"].Value.ToString();
}

siedmohsen
چهارشنبه 01 آذر 1391, 22:43 عصر
سلام دوست عزیز
من از این روش استفاده می کنم نمیدونم بهینه هس یا نه !!!!!!!!!!!!!!
ابتدا id رو از DGV به دست میارم

dataGridView1.CurrentRow.Cells[0].Value.ToString();

بعدش اون id رو به فرم بعدی میفرستم
حالا با به Select ساده میشه به داده ها دسترسی داشته باشی



همواره موفقو پیروز باشی

danialafshari
پنج شنبه 02 آذر 1391, 01:56 صبح
فیلد ID رو در یک متغیر Public میریزی و بعد در فرم بعد روی Form_Load کد جستجوی اون فیلد رو می زنی و همه ی textBox ها رو databinding شون رو روی فیلداشون تنظیم می کنی
موفق باشی

Mahmoud Zaad
پنج شنبه 02 آذر 1391, 10:58 صبح
سلام دوست عزیز
من از این روش استفاده می کنم نمیدونم بهینه هس یا نه !!!!!!!!!!!!!!
ابتدا 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;