1 ضمیمه
نقل قول: کامپوننت Ces.WinForm.UI
سلام. اگر بارگذاری اطلاعات در ComboBox کمی زمان ببره، عبارت Loading... در داخل کنترل نمایش داده میشه و دکمه های تعبیه شده در کنترل تا زمانی که عبارت Loading نمایش داده بشه غیرفعال هستند. این ویژگی باید در جای مناسب فعال و سپس غیرفعال بشه.
ضمیمه 156488
Wiki (English & Persian):
https://github.com/CesSolutions/Ces....ki/CesComboBox
Update History:
https://github.com/CesSolutions/Ces.WinForm.UI/wiki
Nuget Package:
https://www.nuget.org/packages/Ces.WinForm.UI/
Repository:
https://github.com/CesSolutions/Ces.WinForm.UI
نقل قول: کامپوننت Ces.WinForm.UI
نقل قول: کامپوننت Ces.WinForm.UI
جلوگیری از رویداد SelectionChanged در نسخه 1.18.4
مساله
- پروژه از نوع Windows Form Application هستش
- در یک فرم دو تا DataGridView داریم که یکی در نقش Master و دیگری در نقش Detail
- کنترل Grid در داتنت در ذات خودش زمانی که مقدار دهی میشه رویداد SelectionChanged رو اجرا میکنه (بدون کلید کاربر و قبل از تخصیص مقدار جدید).
- گرید Master دادههای مورد نظر رو دریافت کرده و نمایش میده و بصورت خودکار (پیش فرض داتنت) سلول اول در حالت انتخال قرار میگره و اگر SelectionMode = FullRow باشه ردیف اول در حالت انتخاب قرار میگیره. در این موقع CurrentCell و یا CurrentRow دیگه null نیستند (که به نظرم خوب هم نیست)
- حالا اگر کاربر یک ردیف از گرید Master انتخاب کنه رویداد SelectionCanged از گرید Master گرید Detail رو مقدار دهی میکنه در واقع یک API صدا زده میشه و اطلاعات رو دریافت و سپس نمایش میده.
- اگر در این زمان کاربر بدون هیچ تغییری در انتخاب ردیفهای گرید، مجددا دادهها را در گرید Master بارگذاری کنه، قبل از تخصیص دیتای جدید بدلیل آنگه ردیف انتخاب شده از حالت انتخاب خارج میشه (متد ClearSelection اجرا میشه) و SelectionChange در گرید Master اجرا میشه و با توجه به اینکه متغیرهای CurrentCell و CurrentRow دارای مقدار هستند بنابراین یکبار دیگه (که اصلا نیاز نیست) گرید Detail مقداردهی میشه.
- حالا بعد از بارگذاری دوبارهی گرید Master کاربر باید روی ردیف مورد نظر کلیک کنه و گرید Detail مطابق انتخاب جدید مقدار دهی بشه.
- تا اینجا گرید Detail سه بار مقداردهی شده. 1) با انتخاب ردیف از گرید Master و 2) قبل از بارگذاری دادههای جدید در گرید Master و 3) با انتخاب ردیف از گرید Master بعد از بارگذاری اطلاعات جدید. در اینجا مرحله 3 ضروری نیست
بروزرسانی CesGridView و CesGridViewPro
در زمان تخصیص اطلاعات از طریق ویژگی CesDataSource ضمن آنکه رویداد OnSelectionChanged اجرا نمیشه بلکه گرید بدون انتخاب سلول و یا ردیف خواهد بود و مقادیر CurrentCell و CurrentRow برابر null هستند. حالا می توان در رویداد SelectionChanged از گرید Master بررسی کرد اگر مقادیر CurrentCell و CurrentRow برابر null بودند (که در نسخه داتنت دارای مقدار بودند)، مقدار ویژگی CesDataSource از گرید Detail رو برابر null قرار داد که در این حالت اگر قبلا گرید مقداردهی شده باشد، ستونها حفظ خواهند شد و ردیفها از بین می روند.