استفاده از افزونه MD.BootstrapPersianDateTimePicker در گریدهای Kendo UI
نویسنده: وحید نصیری
تاریخ: ۱۳۹۶/۰۶/۲۰ ۱۵:۱۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
npm install moment-jalaali --save
node_modules/moment/min/moment.min.js node_modules/moment-jalaali/build/moment-jalaali.js
Install-Package MD.BootstrapPersianDateTimePicker
<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>
{
field: "addDate", title: "تاریخ ثبت",
template: "#=moment(addDate).format('jYYYY/jMM/jDD')#", editor: function(container, options) {
} // دریافت تاریخ میلادی و تبدیل آن به شمسی جهت نمایش در تکست باکس
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); // با خبر سازی کتابخانه انتخاب تاریخ از تکست باکس جدید EnableMdDateTimePickers();
// هر زمانیکه کاربر تاریخ جدیدی را وارد کرد، آنرا به میلادی تبدیل کرده و در مدل ردیف جاری ثبت میکنیم
// در نهایت این مقدار میلادی است که به سمت سرور ارسال خواهد شد
$('#' + 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');
}); "addDate": {
type: "string", // use "date" if you want to use the built-in datapicker
validation: { required: true }
} filterable: {
ui: function(element) {
var name = $(element[0]).data("bind").replace("[","").replace("]","").replace(".","").replace(" ","").replace(":","");
$(element[0])
.addClass("k-input k-textbox")
.attr("style", "width:100%")
.attr("data-mddatetimepicker", "true")
.attr("data-englishnumber", "true")
.attr("data-trigger", "click")
.attr("data-targetselector", "#" + name)
.attr("data-fromdate", "true")
.attr("data-enabletimepicker", "false")
.attr("data-placement", "right")
.attr("name", name)
.attr("id", name);
EnableMdDateTimePickers();
}
} filter: function(args) {
console.log(args);
if(args.field === "addDate") {
for(var i = 0; i < args.filter.filters.length; i++) {
var filterValue = args.filter.filters[i].value;
if(filterValue) {
args.filter.filters[i].value = moment(filterValue, 'jYYYY/jMM/jDD').format('YYYY-MM-DD');
}
}
}
},