اشتراکها
NuGet 3.0 CTP 1 منتشر شد
اشتراکها
10.Visual Studio 2017 15.9 منتشر شد
- We have fixed an issue with debugging using Docker when a web proxy is configured.
- In debugging using Docker, you will now experience improved error handling for failures related to drive sharing configuration (for example, expired credentials).
مرسی بابت این پست، راه حل جدید و کارآمدی یاد گرفتم.
پیش از این برای ادیتورهای Froala به نحو زیر عمل میکردم:
یک سوال: با استفاده از راه حلی که مطرح کردید، چطور میشه ادیتور رو در صورت وجود خطا Focus کرد و یا کلاس CSS خاصی بدان اضافه کرد؟
پیش از این برای ادیتورهای Froala به نحو زیر عمل میکردم:
var editor = $("#content"); // textArea id var text = editor.editable("getText"); // gets plain text if(text.length < 1) { alert('Post content cannot be empty'); editor.focus(); return false; }
یک سوال: با استفاده از راه حلی که مطرح کردید، چطور میشه ادیتور رو در صورت وجود خطا Focus کرد و یا کلاس CSS خاصی بدان اضافه کرد؟
- InvalidOperationException Writing is not allowed after writer was completed
- ICE on valid code after upgrading to 16.2.0
- CPU Usage Tool context menu does not navigate
- Wrong assembly when result of conversion operator is converted to reference to base class.
- DockerUpdateComposeVsGeneratedFiles throws "Value cannot be null" ("Parameter name: path1") after updating to Visual Studio 16.3
- CPU Usage Tool contect menu does not navigate.
- InvalidOperationException Writing is not allowed after writer was completed.
- Publish doesn't work in Visual Studio 16.3.1.
- This fixes an issue with the Snapshot Debugger where customers are using MSA accounts.
- Fixed an issue where customers trying to install Microsoft.Visualstuio.Shell.15.0 NuGet package received a warning message of Framework not found.
- Fixes MSVC compiler bug involving implicit conversion from a lambda to function pointer.
- Fixed issue with Visual Studio crashing due to null reference exception.
- A fix is made to address a compiler interal error when the code has a out-of-line definition of a static data member of a nested class inside a partial specialization.
در این مطلب قصد داریم نحوهی یکپارچه سازی افزونهی انتخاب تاریخ و زمان MD.BootstrapPersianDateTimePicker را با گریدهای Kendo UI، در دو حالت ویرایش به صورت popup و یا inline، بررسی کنیم:
پیشنیازها
برای این مطلب از دو کتابخانهی moment-jalaali، برای تبدیل تاریخ، از میلادی به شمسی و برعکس، استفاده خواهیم کرد. همچنین کنترل انتخاب تاریخ نیز از کتابخانهی MD.BootstrapPersianDateTimePicker تامین میشود.
moment-jalaali را میتوانید به صورت ذیل از طریق npm نصب کنید:
سپس دو مدخل ذیل را باید به مجموعهی مداخل اسکریپتهای صفحهی خود اضافه کنید:
MD.BootstrapPersianDateTimePicker را یا از طریق نیوگت نصب کنید و یا مخزن کد آنرا به صورت کامل دریافت کنید:
پس از دریافت این بسته، فایل jquery.Bootstrap-PersianDateTimePicker.css آنرا به مداخل cssهای خود اضافه کنید.
همچنین فایلهای jalaali.js و jquery.Bootstrap-PersianDateTimePicker.js آنرا نیز به مداخل اسکریپتهای صفحهی خود اضافه نمائید.
در کل اگر از ASP.NET Core استفاده میکنید، فایل bundleconfig.json یک چنین شکلی را پیدا خواهد کرد. در این حالت فایل layout برنامه تنها این دو مدخل نهایی را نیاز خواهد داشت:
فعالسازی کنترل انتخاب تاریخ شمسی بجای کامپوننت پیش فرض انتخاب تاریخ Kendo UI
پس از افزودن ارجاعات مورد نیاز، اکنون فرض ما بر این است که ستون تاریخ، دقیقا با فرمت میلادی از سمت سرور دریافت میشود و addDate نام دارد.
پس از آن، مرحلهی اول کار، نمایش این تاریخ میلادی به صورت شمسی است:
اینکار را با تعریف یک template و سپس ارسال مقدار addDate که همان نام خاصیت ستون جاری است به کتابخانهی moment-jalaali، انجام میدهیم. در این حالت همواره تاریخهای میلادی تنظیم شدهی در این ستون، در حالت نمایش معمولی با فرمت شمسی ظاهر میشوند.
در ادامهی تکمیل خواص ستون جاری، خاصیت editor را اضافه خواهیم کرد:
توسط پارامتر اول آن میتوان کار سفارشی سازی کنترل ویرایش این ستون را انجام داد و خاصیت دوم آن، نام فیلد جاری و همچنین مقادیر مدل آنرا در اختیار ما قرار میدهد.
در ادامه نیاز است یک input field سفارشی را در اینجا درج کنیم تا کار نمایش کنترل انتخاب تاریخ شمسی را انجام دهد:
کاری که در اینجا انجام شده، افزودن یک input مزین شده با ویژگیهای مخصوص MD.BootstrapPersianDateTimePicker است تا توسط آن شناسایی شود. همچنین چون مقدار options.model.addDate در اصل میلادی است، توسط کتابخانهی moment-jalaali به شمسی تبدیل و بجای value این کنترل ارائه میشود تا زمانیکه این ستون در حالت ویرایش قرار گرفت، این تاریخ شمسی توسط کنترل انتخاب تاریخ، به درستی پردازش شده و نمایش داده شود.
متد input.appendTo، کار افزودن این input جدید را به container یا همان محل نمایش ستون جاری، انجام میدهد.
در این حالت اگر برنامه را اجرا کنید، هرچند ظاهر Input جدید تغییر کردهاست، اما سبب نمایش کنترل انتخاب تاریخ نمیشود؛ چون این فیلد ویرایشی، پس از رندر صفحه، به صفحه اضافه شدهاست. به همین جهت نیاز است متد EnableMdDateTimePickers نیز فراخوانی شود. این متد کار فعالسازی input جدید را انجام خواهد داد:
تا اینجا موفق شدیم بجای کنترل انتخاب تاریخ میلادی، کنترل انتخاب تاریخ شمسی را نمایش دهیم. اما تاریخی که انتخاب میشود نیز شمسی است و تاریخی که به سمت سرور ارسال خواهد شد، میلادی میباشد. به همین جهت تغییرات این کنترل را تحت نظر قرار داده و هر زمانیکه کاربر تاریخی را انتخاب کرد، آنرا به میلادی تبدیل کرده و بجای فیلد addDate اصلی تنظیم میکنیم:
تنها مرحلهی باقیمانده، مخفی کردن این کنترل نمایش تاریخ، با از دست رفتن فوکوس است:
اگر این کار را انجام ندهیم، در حالت popup با بسته شدن آن، هنوز کنترل نمایش تاریخ نمایان خواهد بود و بسته نمیشود یا در حالت ویرایش inline، با کلیک بر روی دکمهی لغو ویرایش ردیف، باز هم شاهد باقی ماندن این کنترل در صفحه خواهیم بود که تجربهی کاربری مطلوبی به شمار نمیرود.
کدهای کامل این مثال را از اینجا میتوانید دریافت کنید: با این کنترلر و این View
پیشنیازها
برای این مطلب از دو کتابخانهی moment-jalaali، برای تبدیل تاریخ، از میلادی به شمسی و برعکس، استفاده خواهیم کرد. همچنین کنترل انتخاب تاریخ نیز از کتابخانهی MD.BootstrapPersianDateTimePicker تامین میشود.
moment-jalaali را میتوانید به صورت ذیل از طریق npm نصب کنید:
npm install moment-jalaali --save
node_modules/moment/min/moment.min.js node_modules/moment-jalaali/build/moment-jalaali.js
MD.BootstrapPersianDateTimePicker را یا از طریق نیوگت نصب کنید و یا مخزن کد آنرا به صورت کامل دریافت کنید:
Install-Package MD.BootstrapPersianDateTimePicker
همچنین فایلهای jalaali.js و jquery.Bootstrap-PersianDateTimePicker.js آنرا نیز به مداخل اسکریپتهای صفحهی خود اضافه نمائید.
در کل اگر از ASP.NET Core استفاده میکنید، فایل bundleconfig.json یک چنین شکلی را پیدا خواهد کرد. در این حالت فایل layout برنامه تنها این دو مدخل نهایی را نیاز خواهد داشت:
<link href="~/css/site.min.css" rel="stylesheet" asp-append-version="true" /> <script src="~/js/site.min.js" type="text/javascript" asp-append-version="true"></script>
فعالسازی کنترل انتخاب تاریخ شمسی بجای کامپوننت پیش فرض انتخاب تاریخ Kendo UI
پس از افزودن ارجاعات مورد نیاز، اکنون فرض ما بر این است که ستون تاریخ، دقیقا با فرمت میلادی از سمت سرور دریافت میشود و addDate نام دارد.
پس از آن، مرحلهی اول کار، نمایش این تاریخ میلادی به صورت شمسی است:
{ field: "addDate", title: "تاریخ ثبت", template: "#=moment(addDate).format('jYYYY/jMM/jDD')#",
در ادامهی تکمیل خواص ستون جاری، خاصیت editor را اضافه خواهیم کرد:
editor: function(container, options) { }
در ادامه نیاز است یک input field سفارشی را در اینجا درج کنیم تا کار نمایش کنترل انتخاب تاریخ شمسی را انجام دهد:
// دریافت تاریخ میلادی و تبدیل آن به شمسی جهت نمایش در تکست باکس var persianAddDate = moment(options.model.addDate).format('jYYYY/jMM/jDD'); // ایجاد کنترل انتخاب تاریخ سفارشی با مقدار تاریخ شمسی دریف جاری var input = $('<div dir="ltr" class="input-group">'+ '<div class="input-group-addon" data-name="datepicker1" data-mddatetimepicker="true" data-trigger="click" data-targetselector="#' + options.field + '" data-fromdate="false" data-enabletimepicker="false" data-englishnumber="true" data-placement="left">'+ '<span class="glyphicon glyphicon-calendar"></span>'+ '</div>'+ '<input type="text" value="'+ persianAddDate +'" class="form-control" id="' + options.field + '" placeholder="از تاریخ" data-mddatetimepicker="true" data-trigger="click" data-targetselector="#' + options.field + '" data-englishnumber="true" data-fromdate="true" data-enabletimepicker="false" data-placement="right" />'+ '</div>'); // افزودن کنترل جدید به صفحه input.appendTo(container);
متد input.appendTo، کار افزودن این input جدید را به container یا همان محل نمایش ستون جاری، انجام میدهد.
در این حالت اگر برنامه را اجرا کنید، هرچند ظاهر Input جدید تغییر کردهاست، اما سبب نمایش کنترل انتخاب تاریخ نمیشود؛ چون این فیلد ویرایشی، پس از رندر صفحه، به صفحه اضافه شدهاست. به همین جهت نیاز است متد EnableMdDateTimePickers نیز فراخوانی شود. این متد کار فعالسازی input جدید را انجام خواهد داد:
// با خبر سازی کتابخانه انتخاب تاریخ از تکست باکس جدید EnableMdDateTimePickers();
تا اینجا موفق شدیم بجای کنترل انتخاب تاریخ میلادی، کنترل انتخاب تاریخ شمسی را نمایش دهیم. اما تاریخی که انتخاب میشود نیز شمسی است و تاریخی که به سمت سرور ارسال خواهد شد، میلادی میباشد. به همین جهت تغییرات این کنترل را تحت نظر قرار داده و هر زمانیکه کاربر تاریخی را انتخاب کرد، آنرا به میلادی تبدیل کرده و بجای فیلد addDate اصلی تنظیم میکنیم:
// هر زمانیکه کاربر تاریخ جدیدی را وارد کرد، آنرا به میلادی تبدیل کرده و در مدل ردیف جاری ثبت میکنیم // در نهایت این مقدار میلادی است که به سمت سرور ارسال خواهد شد $('#' + options.field).change(function(){ var selectedPersianDate = $(this)[0].value; var gregorianAddDate = moment(selectedPersianDate, 'jYYYY/jMM/jDD').format('YYYY-MM-DD'); options.model.set('addDate', gregorianAddDate); });
تنها مرحلهی باقیمانده، مخفی کردن این کنترل نمایش تاریخ، با از دست رفتن فوکوس است:
// با از دست رفتن فوکوس نیاز است این کنترل مخفی شود $('#' + options.field).blur(function(){ $('[data-name="datepicker1"]').MdPersianDateTimePicker('hide'); });
کدهای کامل این مثال را از اینجا میتوانید دریافت کنید: با این کنترلر و این View
- Added support for Xcode 11.2
- 'TypeConverter cannot convert from System.String' after upgrade to Visual Studio 2019.
- Fixed an issue where loading existing extensions (.design dll) in UWP crashes Visual Studio.
اشتراکها
NET 7 Preview 5. منتشر شد
Today we released .NET 7 Preview 5. This preview of .NET 7 includes improvements to Generic Math which make the lives of API authors easier, a new Text Classification API for ML.NET that adds state-of-the-art deep learning techniques for natural language processing, various improvements to source code generators and a new Roslyn analyzer and fixer for RegexGenerator and multiple performance improvements in the areas of CodeGen, Observability, JSON serialization / deserialization and working with streams.