PDA

View Full Version : سوال: sort در DataGridView



hooooman
شنبه 25 خرداد 1387, 20:29 عصر
سلام
فرض کنین 1 دیتاگرید بایند شده هست با مثلا 1000 تا ردیف
حالا این گرید ویو رو سورت میکنیم. (صعودی) . در این حالت ردیف جاری
در حالت قبل از سورت با ردیف جاری در حالت بعد از سورت تغییر میکنه . و پیدا کردنش سخته . اگه بخایم جوری سورت بشه که ردیف جاری همون ردیف قبل بمونه (یعنی اگر اون ردیف تحت تاثیر سورت به انتهای گرید هم رفت گرید اسکرول بشه روی اون ردیف)
باید چیکار کرد؟

combo_ci
شنبه 25 خرداد 1387, 23:22 عصر
بببين رديف هات حتما يه id يا serial داره ديگه....قبل از sort كد id يا serial اووون رديف رو ذخيره كن ...بعد از sort دوباره همون رديف رو select كن

hooooman
یک شنبه 26 خرداد 1387, 11:00 صبح
من 1 کار مضحک کردم که فک نکنم اصلا اصولی باشه
اومدم تو رویداد CellEndEdit گفتم اگه سلول ادیت شده سلول تاریخ (سلولی که سورت بر اساس اون اتفاق افتاده) بود اینکارو بکن:



recover = 0
dg1.Sort(dg1.Columns("vouch_miladidate"), System.ComponentModel.ListSortDirection.Ascending)
For recover = 0 To dg1.Rows.Count - 1
If dg1.Rows(recover).Cells("vouch_number").Value = rr Then
dg1.CurrentCell = dg1(0, recover)
Exit For
End If
Next
SendKeys.Send("{HOME}")


که اون خط آخرو بخاطر این گذاشتم که وقتی انتقال HighLight صورت میگیره اگه ردیف مورد نظر در محدوده دید نباشه (بالاتر یا پایینتر باشه ) اسکرول اتفاق نمیوفته !!!!! در صورتیکه با کمال تعجب !! HighLight درست روی همون ردیف مورد نظره ! یعنی اینجوری در نظر بگیرین که 1 گرید ویوی دارین که اصلا فوکس روش نیست حالا با زدن دکمه Home فوکس میره روی سلول 0 و گریدویو اسکرول میشه به ردیفی که الان فعاله!! ولی فک کنم 1 اشکالی توش هست که اینطوریه