PDA

View Full Version : بهترین روش بروزرسانی Bound DataSource از نوع BindingList ؟



رافعی مهدی
پنج شنبه 29 دی 1390, 18:07 عصر
با سلام

برای Bind کردن اختصاصی (Customized) یک DataGridView به SQL، یک کلاس Generic به شکل زیر ایجاد کردم:


public class AdvancedBindingList<T> : BindingList<T>, IBindingListView
{
...
}

که در آن T از اینترفیس INotifyPropertyChanged استفاده میکنه.

با پاس دادن Instance ای از کلاس فوق به یک DataGridView.DataSource، تونستم به نوعی Binding اختصاصی دست پیدا کنم. (اختصاصی به این دلیل که کلاس T، در نقش یک Wrapper عمل میکنه و Data را به نحو خاص و مطلوب به DGV متصل میکنه) ...♂


سوال اینه که بهترین روش برای Update کردن DataSource بر اساس تغییرات Database چیه؟ به عبارت دیگر، بهترین روش برای ایجاد آن سوی Binding؟ (Server Side Binding)

توضیح بیشتر:
بعد از گرفتن اطلاعات از DB، به طور معمول SqlConnection بسته میشه تا RAM بیجهت Leakage نکنه، در این شرایط _یعنی باز نبودن دائمی یک Connection_ اولین راهی که به نظرم میرسه تا تغییرات روی DB را Trace کنم، این هست که از یک Thread استفاده کنم که اعلانهای عمومی مربوط به تغییر توسط هر Client روی DB را چک کنه و در صورت لزوم، قسمت مورد نیاز از DataSource سایر Client ها را Update کنه. این روش عملی است و جواب هم میده، منتهی به نظرم میرسه که با این معماری، این سبک از Binding گسسته شده. به عبارت دیگر Binding به صورت اختصاصی صورت گرفته (به همراه کلی امکانات جانبی مثل سورت _حتی ستونهای از جنس Image_، جستجوی بسیار سریع _حتی بین چند هزار رکورد با تعداد فیلدهای بالا به طور آنی_، فیلتر DGV، ایجاد Viewهای دلخواه و ...) اما، تغییرات DB در کلاس AdvancedBindingList حس نمیشود تا آنها را به DataSource منتقل کنم و Binding وضعیت یک طرفه به خودش گرفته. چطور این تغییرات رو بدون روش Manual مثل بهره گیری از Thread و ... به اطلاع BindingList برسونم؟ (امیدوارم خیلی سخت توضیح نداده باشم :چشمک:)



___________________________
♂ برای اطلاعات بیشتر در خصوص این سبک از Bind کردن Data به یک DGV، لینکهای زیر را مطالعه کنید.
Binding a DGV to a Collection (http://www.switchonthecode.com/tutorials/csharp-tutorial-binding-a-datagridview-to-a-collection)
Custom Data Binding - Part 1 (http://msdn.microsoft.com/en-us/library/ms951295.aspx)
Custom Data Binding - Part 2 (http://msdn.microsoft.com/en-us/library/ms993236.aspx)
Custom Data Binding - Part 3 (http://msdn.microsoft.com/en-us/library/ms993124.aspx)