ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
سلام .
چطور میتونم بعد از اینکه دیتاگریدیو رو رفرش کردم یا بعد از آپدیت فوکوس رو رویه سطر جاری نگه دارم .
چون در حال حاضر با هر بار آپدیت کردن سطر جاری ، فوکوس به رکورد اول منتقل میشه .
با سپاس
نقل قول: ماندن فوکوس بر روی سطر جاری دیتاگریدویو بعد از رفرش یا آپدیت
سلام
میتونی از یک متغییر کمکی جهت نگهداشتن ایندکس سطر انتخابی استفاده کنی و بعد از آپدیت مجدد سطر مورد نظر را Select کنی
int SelectedRow;
private void DataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged != DataGridViewElementStates.Selected) return;
SelectedRow= dataGridView1.CurrentRow.Index;
}
private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
SelectedRow= dataGridView1.CurrentRow.Index;
}
//برای انتخاب مجدد سطر
dataGridView1.Rows[SelectedRow].Selected = true;
نقل قول: ماندن فوکوس بر روی سطر جاری دیتاگریدویو بعد از رفرش یا آپدیت
نقل قول:
نوشته شده توسط
ژیار رحیمی
سلام
میتونی از یک متغییر کمکی جهت نگهداشتن ایندکس سطر انتخابی استفاده کنی و بعد از آپدیت مجدد سطر مورد نظر را Select کنی
int SelectedRow;
private void DataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged != DataGridViewElementStates.Selected) return;
SelectedRow= dataGridView1.CurrentRow.Index;
}
private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
SelectedRow= dataGridView1.CurrentRow.Index;
}
//برای انتخاب مجدد سطر
dataGridView1.Rows[SelectedRow].Selected = true;
متاسفانه این کد جواب نداد و دوباره میره سطر اول
نقل قول: ماندن فوکوس بر روی سطر جاری دیتاگریدویو بعد از رفرش یا آپدیت
بعد از اینکه من آپدیت رو انجام میدم یکبار متود آپدیتم رو صدا میزنم و اونجا SelectedRow من صفر میشه . بخاطر همین کد شما جواب نمیده .
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
دو راه دارید،
یکی همین کاری که کردید و دوباره اطلاعات را دریافت کنید اما قبل از دریافت مجدد بایست اندیس سطری که آپدیت میشه را بدست بیارید و بعد از دریافت اطلاعات و نمایش در دیتاگرید CurrentRow را به همان اندیس ست کنید.
راه دیگر هم این هست که بعد از اینکه عمل آپدیت را انجام دادید، سطر مورد نظر از منبع داده را با اطلاعات مورد نظر به روزرسانی کنید. در این حالت دیگه نیاز به دریافت مجدد اطلاعات از دیتابیس نیست.
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
با سلام
ابتدا خصوصیات دیتاگرید را به شکل زیر تغییر دهید:
MultiSelect = false
SelectionMode = FullRowSelect
سپس کد زیر را را در باتن ثبت بنویسید
private void btnUpdate_Click(object sender, EventArgs e)
{
int rowSelect = dataGridView1.CurrentRow.Index;
//Update code is here
//some code for update
//refresh
Form1_Load(null, null);
//after update
dataGridView1[0, rowSelect].Selected = true;
}
موفق باشید
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
نقل قول:
نوشته شده توسط
danialafshari
با سلام
ابتدا خصوصیات دیتاگرید را به شکل زیر تغییر دهید:
MultiSelect = false
SelectionMode = FullRowSelect
سپس کد زیر را را در باتن ثبت بنویسید
private void btnUpdate_Click(object sender, EventArgs e)
{
int rowSelect = dataGridView1.CurrentRow.Index;
//Update code is here
//some code for update
//refresh
Form1_Load(null, null);
//after update
dataGridView1[0, rowSelect].Selected = true;
}
موفق باشید
سپاس فراوان آقای افشاری .
کد شما جواب داد .
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
نقل قول:
نوشته شده توسط
danialafshari
با سلام
ابتدا خصوصیات دیتاگرید را به شکل زیر تغییر دهید:
MultiSelect = false
SelectionMode = FullRowSelect
سپس کد زیر را را در باتن ثبت بنویسید
private void btnUpdate_Click(object sender, EventArgs e)
{
int rowSelect = dataGridView1.CurrentRow.Index;
//Update code is here
//some code for update
//refresh
Form1_Load(null, null);
//after update
dataGridView1[0, rowSelect].Selected = true;
}
موفق باشید
سلام این مورد خیلی هم خوب کار میکنه در صورتی که کاربر روی ستون کلیک نکنه و ترتیب سطرها را تغییر نده . ولی
حالا اگه کاربر روی گرید کلیک کنه و ترتیب رکورد ها جابجا شد بعد از آپدیت شدن دیتا و لود مجدد دیتا ها چون سورت دیتا تغییر میکنه ایندکس سطر انتخابی چون یک بار کلیک کرده تغییر میکنه و دیگه اون سطر انتخابی کاربر نیست برای حل این مورد دیگه خاصیت CurrentRow جوابگو نیست .
برای حل این مورد چه راه حلی موجود هست؟
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
سلام
در مورد این مشکل بهتره بجای CurrentRow دیتاگرید Id رکورد (انتخاب شده)رو نگه داری بعد از ویرایش یه جسنجو در دیتاگرید انجام بدی و سطری که Id رکورد ان برابر مقدار نگداری شده بود را در DataGrid سلکت کنی
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
دوستان من مجدد این پست رو آپ میکنم چون یه مشکلی پیش اومده واسم .
من دقیقا بعد از اینکه آپدیت رو انجام دادم دوباره میام و کوئری که اطلاعات رو تویه گرید نشون میده رو فراخوانی میکنم . تا الان باهاش مشکلی نداشتم ولی از موقعی که اومدم و بر اساس یه ستون خاص Order By رو انجام دادم ، سطر مورد نظر انتخاب میشه ولی دوباره میاد و اول دیتاگرید رو نشون میشه .!!!!! (یعنی باس اسکرول کنم تا سطر انتخابی رو ببینم)
چطور میتونم فوکوس دیتاگرید رو هم رویه اون سطر انتخابی بندازم .
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
مشکل رو از طریق کد پایین حل کردم . ولی هنوز یه موردی داره : اونم اینه که اگه رویه یه ستونی جهت مرتب سازی کلیک کرده باشی بعد از آپدیت فوکوس رویه سطر جاری نمیمونه. این مورد رو چه باید کرد ؟
int saveRow = 0;
if (dataGridView1.Rows.Count > 0)
saveRow = dataGridView1.FirstDisplayedCell.RowIndex;
if (saveRow != 0 && saveRow < dataGridView1.Rows.Count)
dataGridView1.FirstDisplayedScrollingRowIndex = saveRow;
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
اینو من هم دنبالشم
اگه کسی نمونه ای داره قرار بده
نقل قول: ماندن فوکوس بر روی سطر جاری datagridview بعد از رفرش یا آپدیت
privatevoidbtnUpdate_Click(objectsender, EventArgs e) {
int rowSelect = dataGridView1.CurrentRow.Index;
//Update code is here
//some code for update
//refresh
Form1_Load(null, null);
//after update
dataGridView1.CurrentCell = dataGridView1.Rows[rowSelect].Cells[1];
}
من این کد رو اینطوری اصلاح کردم تست کنید جواب میده موفق باشید