رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
سلام خیلی گشتم جواب قانع کننده پیدا نکردم تاپیک ایجاد کردم
من میخوام هنگام ویرایش یا خذف رکود در دیتاگرید تغییرات رفرش بشه ولی موقعیت انتخاب دیتاگرید فرق نکنه
مثلا با کد زیر کل فرم رفرش میشه و سلکت دیتاگرید در ایندکس 0 قرار میگیره
private void button2_Click(object sender, EventArgs e) {
this.delete();
ds = new DataSet();
SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Table2", con);
//ad.Fill(ds, "Table2");
//dataGridView1.DataSource = ds;
//dataGridView1.DataMember = "Table2";
dataGridView1.Refresh();
نقل قول: رفرش شدن دیتاگرید و تغییر اطلاعات بدون تغییر موقعیت select
اینو پیدا کردم تقریبا درسته
int m = int.Parse(dataGridView1.CurrentRow.Index.ToString( ));
dataGridView1.CurrentCell = dataGridView1[0, m];
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
به نظر من اگر اطلاعات با موفقیت آپدیت شد فقط همون سطر را در دیتاست بروز کنید. برای حذف هم میتونید ردیف موردنطر را از منبع داده حذف کنید.
نقل قول: رفرش شدن دیتاگرید و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول:
نوشته شده توسط
علی فتحی
اینو پیدا کردم تقریبا درسته
int m = int.Parse(dataGridView1.CurrentRow.Index.ToString( ));
dataGridView1.CurrentCell = dataGridView1[0, m];
بله درسته منم از این روش استفاده میکنم.مهندس افراد هم نظرشون درسته ولی خب اگه برنامه تحت شبکه باشه برای دریافت آخرین اطلاعاتی که ممکنه سایر کاربران تغییر داده باشن بهتره یه سلکت دوباره انجام بشه.(البته فقط این نظر شخصیه)
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
ممنون از دوستان ولی رفرش شدن فقط یک سطر مگر ممکن است؟
برنامه حسابداری تارا همچین کاری کرده هنگام ویرایش فقط سطر مورد نظر لحظه ای ویرایش میشه بدون لود دوباره فرم
و سلکت دیتاگرید درست سر جای خودش میمونه بدون تغییر این روش خیلی جالبه فقط کدش معلوم نیست چگونه هستش
البته با ویزار میشه اینکارو کرد و تغییرات را با endedit(); انجام داد ولی برنامه ویزاردی زیاد جالب نیست.وپیشنهاد برنامه نویسان حرفه ای استفاده نشه بهتره
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول:
نوشته شده توسط
علی فتحی
ممنون از دوستان ولی رفرش شدن فقط یک سطر مگر ممکن است؟
برنامه حسابداری تارا همچین کاری کرده هنگام ویرایش فقط سطر مورد نظر لحظه ای ویرایش میشه بدون لود دوباره فرم
و سلکت دیتاگرید درست سر جای خودش میمونه بدون تغییر این روش خیلی جالبه فقط کدش معلوم نیست چگونه هستش
البته با ویزار میشه اینکارو کرد و تغییرات را با endedit(); انجام داد ولی برنامه ویزاردی زیاد جالب نیست.وپیشنهاد برنامه نویسان حرفه ای استفاده نشه بهتره
بله ممکنه.
شما که داده های جدید رو تو سطر وارد کردید خب. و دکمه ذخیره رو زدید دیتابیس شما بروز شد . تو این حالت شما دیگه نیازی به سلکت اون ردیف ندارید چون خود داده جدید الان اونجا هست. اگه هم میخواید سلکت کنید بر حسب کلید اون ردیف سلکت کنید و داده های جدید رو تو اون سطر جایگزین کنید.
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نشد جواب نگرفتم تا زمانی که فرم رو لود نکنی تغییرات نشون داده نمیشه
برنامه رافع هم هنچین کاری کرده اگر دوستان کار کرده باشند به محض حذف سلکت در ردیف بعدی قرار میگیره
یا با ویرایش همون لحظه تغییرات نشون داده میشه
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
اگر از bindingSource استفاده کنید تغییرات دیتاتیبل همان لحظه در دیتاگرید نمایش داده میشود.
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
اگر از bindingSource استفاده کنید تغییرات دیتاتیبل همان لحظه در دیتاگرید نمایش داده میشود.
سلام. میشه بگید با چه کدی میتونم اینکار رو انجام بدم؟ آخه من بعد از ویرایش و حذف fill میکنم
ممنون
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
int mm = int.Parse(label1.Text);
dataGridView1.Rows[mm].Cells[0].Selected = true;
دوستان غیر این کد روش دیگری سراغ ندارید باز یک مشکل این کد انتخاب میکنه ولی هنگام لود فرم بازهم در ردیف اول قرار میگیره
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول:
نوشته شده توسط
علی فتحی
int mm = int.Parse(label1.Text);
dataGridView1.Rows[mm].Cells[0].Selected = true;
دوستان غیر این کد روش دیگری سراغ ندارید باز یک مشکل این کد انتخاب میکنه ولی هنگام لود فرم بازهم در ردیف اول قرار میگیره
وقتی سطری رو تغییر میدید بقیه سطرها مقادیرشون به اون وابسته هست؟
اگه نه شما چرا دوباره اطلاعت رو لود میکنید!. اطلاعات جدید رو که تو سطر وارد کردید و داره نشون میده .شما فقط باید یه بار تو پس زمینه آپدیت رو انجام بدید. همین. دیگه رفرش نکنید.
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نشددددددددددددددددددددددد ددددددددددددددددددددددددد دوستان نگرتید من چی میخوتم:ناراحت:
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
سلام به همه. بعد از این همه تقلا یک بار هم، ذخیره مقدار Indix انتخاب شده در یک متغیر عمومی و یا هر روشی که براتون کاربردی تر هست رو امتحان کنید.
(بعد از ریفرش کردن اطلاعات،برای انتخاب مجدد ردیف انتخاب شده؛ مقدار ایندکس ذخیره شده رو استفاده کنید.)
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
نقل قول:
نوشته شده توسط
ROSTAM2
سلام به همه. بعد از این همه تقلا یک بار هم، ذخیره مقدار Indix انتخاب شده در یک متغیر عمومی و یا هر روشی که براتون کاربردی تر هست رو امتحان کنید.
(بعد از ریفرش کردن اطلاعات،برای انتخاب مجدد ردیف انتخاب شده؛ مقدار ایندکس ذخیره شده رو استفاده کنید.)
اندیس رو قبلش بگیرید و بعد از آپدیت و گرفتن مجدد اطلاعات و نمایش اون، currentrow را به همون اندیس ست کنید و با ست کردن FirstDisplayedScrollingRowIndex به اون سطر اسکرول کنید. (خطاهای احتمالی رو باید هندل کنید)
ولی
من باشم این کار رو نمیکنم.
شما سطر مورد نظر رو داری میتونی همون سطر رو در دیتاتیبل تغییرش بدی یا حذف کنی یا ...
یا دیتاتیبل را بایند کنی به دیتاگرید و کنترلهایی مثل تکست باکس و ... که با تغییر مقدار اونها ، سطر دیتاگرید هم تغییر کنه و با آپدیت دیتابیس هم دیتا ثبت بشه.
نقل قول: رفرش شدن datagridview و تغییر اطلاعات بدون تغییر موقعیت select
foreach (DataGridViewRow row in dataGridView1.Rows)
{
int num = Convert.ToInt32(آیدی ردیف دیتاگرید);
if (Convert.ToString(dataGridView1.Rows[row.Index].Cells[1].Value) == num.ToString())
{
dataGridView1.Rows[row.Index].Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = row.Index;
}
}