معرفی کنترل های پاورفرم

اسکریپت های مربوط به یوزر پاورفرم

نام و نام خانوادگی شخصی که وارد فرم می شود ( در قسمت  calculated formula) 
form.UserFullName() 
form.LoginName() 
Current user بصورت یوزری 
form.UserID()+";#"+form.UserFullName() 
نحوه ی نمایش به یک تب به گروهی از افراد 
if (form.UserInGroup("104")) 

   form.ShowTab(1);    

else if (form.UserInGroup("104")) 

   form.HideTab(1); 
گرفتن نام گروهی که یوزر فعلی در آن عضو می باشد .
var user = form.CurrentUser();
var userId = user.ID;
for (var i=0;i<user.Groups.length;i++) {
  var group = user.Groups[i];
  var groupName = group.Name;
}
گرفتن نام یوزر ایجاد کننده
created = dataitem.GetValue("Created")
تکمیل کنترلی از نوع PeoplePicker با نام کاربر جاری
= form.UserID() +";#" + form.GetControl("c_FullName").GetValue();

اسکریپت های مربوط به تاریخ پاورفرم

اضافه و کم کردن روز از کنترل تاریخ 
var theNewDateValue= pf.AddDaysToDate(new Date(), 2); 
alert(theNewDateValue); 
اگر تاریخ بصورت string باشد : 
var theDateValue = form.GetControl('c_Date').GetValue(); 
var theNewDateValue = pf.AddDaysToDateString(theDateValue, 2); 
alert(theNewDateValue ); 
بررسی بزرگتر بودن تاریخ از تاریخ روز
var dateInStringFormat = form.GetControl("c_WorkRentDate").GetValue(); 
var DateObject = pf.ParseDate(dateInStringFormat); 
var date = DateObject.getTime(); 
var dateInStringFormat2 = form.GetControl("c_Now").GetValue(); 
var DateObject2 = pf.ParseDate(dateInStringFormat2); 
var date2 = DateObject2.getTime(); 

if(date<=date2){ 
   alert("تاریخ اعتبار اجاره نامه نبایداز تاریخ روز کوچکتر باشد!"); 
   form.GetControl("c_WorkRentDate").SetValue(""); 
}
اسکریپت نمایش دادن فقط ساعت در کنترل Date & Time 
var c =form.GetControl("c_datetime").InputControl; 
  
$(c.CTRL_DATE).parent().parent().css("display","none"); 
form.GetControl("c_ExpertCreater").SetValue("2"); 
$(".k-input").attr("autocomplete","false"); 
$(".k-input").attr("autocomplete","none"); 
  
  
var header = document.getElementById("myHeader"); 
var sticky = header.offsetTop; 
  
function myFunction() { 
  if (window.pageYOffset > sticky) { 
    header.classList.add("sticky"); 
  } else { 
    header.classList.remove("sticky"); 
حساب کردن تعداد روز از انتخاب بین دو تاریخ 
From = form.GetControl("c_StartDate").GetValue(); 
To = form.GetControl("c_FinishDate").GetValue(); 
var startDate = new Date(From) ; 
var endDate = new Date(To); 
var diffDays = endDate.getTime() - startDate.getTime();  
const oneDay = 1000 * 60 * 60 * 24;
const diffInDays = Math.round(diffDays / oneDay); 
form.GetControl("c_MissionTime1").SetValue(diffInDays); 
form.GetControl("c_PrintBtn").SetVisible(false); 
اسکریپت تاریخ شمسی در includes 
<script> 
function div(a, b) { 
return parseInt((a / b)); 
}function gregorian_to_jalali(g_y, g_m, g_d) { 
var g_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
var j_days_in_month = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29]; 
var jalali = []; 
var gy = g_y - 1600; 
var gm = g_m - 1; 
var gd = g_d - 1; 
var g_day_no = 365 * gy + div(gy + 3, 4) - div(gy + 99, 100) + div(gy + 399, 400); 
  
for (var i = 0; i < gm; ++i) 
g_day_no += g_days_in_month[i]; 
if (gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0))) 
/* leap and after Feb */ 
g_day_no++; 
g_day_no += gd; 
  
var j_day_no = g_day_no - 79; 
  
var j_np = div(j_day_no, 12053); 
/* 12053 = 365*33 + 32/4 */ 
j_day_no = j_day_no % 12053; 
  
var jy = 979 + 33 * j_np + 4 * div(j_day_no, 1461); 
/* 1461 = 365*4 + 4/4 */ 
  
j_day_no %= 1461; 
  
if (j_day_no >= 366) { 
jy += div(j_day_no - 1, 365); 
j_day_no = (j_day_no - 1) % 365; 

for (var i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i) 
j_day_no -= j_days_in_month[i]; 
var jm = i + 1; 
var jd = j_day_no + 1; 
jalali[0] = jy; 
jalali[1] = jm; 
jalali[2] = jd; 
return jalali; 
//return jalali[0] + "_" + jalali[1] + "_" + jalali[2]; 
//return jy + "/" + jm + "/" + jd; 

function get_year_month_day(date) { 
var convertDate; 
var y = date.substr(0, 4); 
var m = date.substr(5, 2); 
var d = date.substr(8, 2); 
convertDate = gregorian_to_jalali(y, m, d); 
return convertDate; 

function get_hour_minute_second(time) { 
var convertTime = []; 
convertTime[0] = time.substr(0, 2); 
convertTime[1] = time.substr(3, 2); 
convertTime[2] = time.substr(6, 2); 
return convertTime; 

function convertDate(date) { 
var convertDateTime = get_year_month_day(date.substr(0, 10)); 
convertDateTime = convertDateTime[0] + "/" + convertDateTime[1] + "/" + convertDateTime[2] + " " + date.substr(10); 
return convertDateTime; 

function get_persian_month(month) { 
switch (month) { 
case 1: 
return "فروردین"; 
break; 
case 2: 
return "اردیبهشت"; 
break; 
case 3: 
return "خرداد"; 
break; 
case 4: 
return "تیر"; 
break; 
case 5: 
return "مرداد"; 
break; 
case 6: 
return "شهریور"; 
break; 
case 7: 
return "مهر"; 
break; 
case 8: 
return "آبان"; 
break; 
case 9: 
return "آذر"; 
break; 
case 10: 
return "دی"; 
break; 
case 11: 
return "بهمن"; 
break; 
case 12: 
return "اسفند"; 
break; 


function get_day(day) { 
  
switch (day) { 
case 1: 
return "01"; 
break; 
case 2: 
return "02"; 
break; 
case 3: 
return "03"; 
break; 
case 4: 
return "04"; 
break; 
case 5: 
return "05"; 
break; 
case 6: 
return "06"; 
break; 
case 7: 
return "07"; 
break; 
case 8: 
return "08"; 
break; 
case 9: 
return "09"; 
break; 
default:day 


</script> 

*/ اسکریپت برای تاریخ شمسی روی کنترل تاریخ  

var dt=form.GetControl("c_ChildBirthDate11").GetValue(); 
arry = dt.split("-"); 
g_y = parseFloat(arry[0]); 
g_m = parseFloat(arry[1]); 
g_d = parseFloat(arry[2]); 
shdt = gregorian_to_jalali(g_y ,g_m ,g_d) 
Mdt = get_persian_month(shdt[1]); 
day=get_day(shdt[2]); 
form.GetControl("day1").SetValue(shdt[2]); 
form.GetControl("month1").SetValue(Mdt); 
form.GetControl("year1").SetValue(shdt[0]);
اسکریپت برای نمایش تاریخ امروز 
var date = pf.FormatANSIDate(new Date()); 
form.GetControl("c_Date").SetValue(date); 

اسکریپت های گرید Grid پاورفرم

مقدار دهی به آیتم های گرید
var items = form.GetControl("c_GridName").InputControl.GetAllItems();
for (var i=0; i < items.length; i++)
{
 form.GetControl("c_Param1").SetValue(items[i].Param1); 
 form.GetControl("c_Param2").SetValue(items[i].Param2);
}
انتخاب همان ردیف انتخاب شده در گرید و انتخاب ستون مورد نظر
var item = form.GetControl("c_GridName").InputControl.GetSelectedItem(); 

form.GetControl("c_Label").SetValue(item.Title); 
مخفی کردن و نمایان شدن یک ستون از گرید 
Grid = form.GetControl("c_Grid"); 

$(Grid.InputControl.CTRL_GRID).data("kendoGrid").hideColumn("FollowNumber");مخفی شدن  

$(Grid.InputControl.CTRL_GRID).data("kendoGrid").showColumn("DateFollow");نمایان شدن 
حذف ردیف iام از گرید
var grid = $("#grid").data("kendoGrid"); 
grid.removeRow("tr:eq(i)"); 
حذف تمامی ردیف های یک گرید
var gridItems =form.GetControl("c_HamyarServices").InputControl.GetAllItems();  
a = Number(gridItems.length);  
for (var i=0; i < a; i++)  
  {  
ctrl = form.GetControl("c_HamyarServices");  
$(ctrl.InputControl.CTRL_GRID).data("kendoGrid").removeRow("#c_HamyarServices_Grid tbody tr")  
}
درج ردیف برای گرید
var index = 0 ;  
  var gridItems =form.GetControl("c_Grid").InputControl.GetAllItems();  
for (var i=0; i < gridItems.length; i++) {  
   index += 1 ;  
   itemEach = gridItems[i] ;  
   itemEach.SetValue('Row' , index);  
}  
ایجاد ردیف انتخاب شده ی یک گرید در یک گرید دیگر
var item =  form.GetControl("c_Grid1").InputControl.GetSelectedItem(); 
eachgridmenu = gridpack[i]; 
var gridchapter=item.Sub; 
var griddateSend=item.Des; 
var gridrow=item.Row; 
item.Sub = gridchapter;  
item.Des = griddateSend; 
item.Row = gridrow; 
form.GetControl("c_Grid2").InputControl.AddNewRow(item); 
افزودن ایتم با دکمه به گرید
var a = form.GetControl("c_Control1").GetValue(); 
var b= form.GetControl("c_Control2").GetValue(); 
var c= form.GetControl("c_Control3").GetValue(); 
var d= form.GetControl("c_Control4").GetValue(); 

var item = new Object(); 
item.Title = a; 
item.OrderStatus = b; 
item.MaterialStatus = c; 
item.RealizationTerms = d; 
form.GetControl("c_Grid").InputControl.AddNewRow(item); 
جمع کردن آیتم های گرید
var sum = 0 ;  
var items = form.GetControl("c_Grid").InputControl.GetAllItems();  
for (var i=0; i < items.length; i++) {  
eachItem = items[i];  
var a =  eachItem.PaymentPrice == "" ? 0 : parseFloat (eachItem.PaymentPrice) ;  
sum += a;  
}  
form.GetControl("c_SumControl").SetValue(sum.toString());  
جمع کردن ستون های یک آیتم در گرید و افزودن در ستون دیگر 
sum = 0; 
  var gridItems = form.GetControl("c_Grid").InputControl.GetAllItems(); 
  for (var i=0; i <gridItems.length ; i++)  
    {   
     itemEach = gridItems[i] ;  
     sum = Number(itemEach.Column1) + Number(itemEach.Column2); 
     itemEach.SetValue('Column3' , sum);  
ضرب یک ستون گرید در کنترلی مستر و قرار دادن نتیجه آن در یک ستون دیگر همان ردیف گرید
sum = 0; 
sum2 = 0; 
var a = form.GetControl("c_Control1").GetValue();  
var gridItems = form.GetControl("c_Grid").InputControl.GetAllItems(); 
    for (var i=0; i <gridItems.length ; i++)  
    {   
   itemEach = gridItems[i] ;  
   sum = Number(itemEach.Culomn1) * Number(a); 
   itemEach.SetValue('Culomn2' , sum);  
غیرفعال کردن یک ستون از دیتاگرید تحت شرایط خاصی
if(e.FieldName=="Title" && e.DataItem.number=="7"){ 
e.Cancel=true;} 
غیرفعال کردن یک ستون از دیتاگرید تحت شرایط خاصی
if(e.FieldName=="Title" && e.DataItem.number=="7"){ 
e.Cancel=true;} 
پر کردن اتوماتیک ستون های دیتاگرید طبق انتخاب یک ستون از آن
var items = form.GetControl("c_grid").InputControl.GetAllItems();   
//title ستون گرید فعلی  
if (fieldName == "Title") {   
function callback(e){     
  if (e.ErrorMessage){   
  alert("ارور");   
  }   
else{   
if (e.ListItems.length > 0){   
     //  alert("items found");     
     //اولی مقدار ستون لیستی که میخواهیم دیتا بخونیم. دومی ستون گرید فعلی  
var a=e.ListItems[0].Post;   
item.SetValue("Position", a);     
var b=e.ListItems[0].User;   
item.SetValue("UserAccount", b);   
   }else{   
       alert("no items found");   
    }   
  }   
}   
criteria = [];   
var ss = new pf.SearchSpec();   
//ID ستون لیستی که میخوایم ازش بخونیم  
ss.FieldName = "ID";     
//ستون گرید فعلی Title  
ss.FieldValue = pf.GetValueFromLookup(item.Title);    
ss.Operator = "Equals";  //Equals,NotEquals,Greater,GreaterOrEqual,Less,LessOrEqual,IsNull,IsNotNull,BeginsWith,Contains,In
ss.Type = "Text";   
criteria.push(ss);   
form.LoadRecords("http://url", "اطلاعات فرزند", "", criteria, null, null, false, 0, callback);   
}
شمردن تعداد ردیف ها در گرید
var gridItems =form.GetControl("c_Grid").InputControl.GetAllItems(); 
form.GetControl("c_Count").SetValue(gridItems.length);
فانکشن استفاده از یک دکمه برای انتخاب کردن ردیف دیتا انتری گرید
<script> 
form = ALL_FORMS[0].Form.FormTemplate; 
function RenderButton() { 
debugger 
        var htmlButton = '<input type="button" '; 
        htmlButton += ' class="k-button sg-button" onclick="OpenUrl()" value="مشاهده"></input>' 
        return htmlButton; 
    }  
function OpenUrl()  

debugger 
var SelectID = form.GetControl("c_Grid").InputControl.GetSelectedItem().ID ; 
var Name = form.GetControl("c_Grid").InputControl.GetSelectedItem().LookUpID_title ; 
Name1=Name.substring(Name.indexOf("#")+1); 
var options = { 
    title: " پایگاه داده پروژه" + " "+ Name1, 
    width: 1500, 
    height: 1000, 
    url: "url"  + SelectID   +"&isdlg=1"}; 
SP.UI.ModalDialog.showModalDialog(options); 

</script> 
RenderButton(ID) 
گرفتن خروجی اکسل از یک گرید پاورفرمی
var grid = form.GetControl("c_Grid").InputControl; 
var cols = []; 
cols.push({field:"Title", title:"Client Ref"}); 
cols.push({field:"ProductName", title:"Product Name"}); 
cols.push({field:"CountryOfOrigin", title:"Country of Origin"}); 
grid.ExportToExcel(cols, "خروجی جدول.xls", "Sheet1"); 
تبدیل تکست مولتی لوکاپ به تکست گرید 
var str = form.GetControl("c_LookupTxt").GetValue(); 
const myArray = str.split(";#"); 
var text = '<Values><Record><Value Name="Service">' 
for(i=0; i<myArray.length-1; i++){ 
      text += myArray[i]; 
      if(i%2 == 0 || i==0){ 
          text+=";#"; 
      }else{ 
          text+='</Value></Record><Record><Value Name="Service">' 
      } 

text+=myArray[myArray.length-1]+'</Value></Record></Values>'; 
form.GetControl("c_value").SetValue(text); 
بازکردن هایپرلینک ها از داخل دیتا گرید به صورت پاپ آپ (include)
<script> 
form = ALL_FORMS[0].Form.FormTemplate;  
function RenderLink(name) {  
debugger  
        var htmlLink = '<a href="#" onclick="OpenUrl()">'+name+'</a>'; 
        return htmlLink;  
    }   
function OpenUrl() {  
debugger  
var SelectLink = form.GetControl("c_GridItem").InputControl.GetSelectedItem().__FullPath ;  
var options = {  
    title: "فایل پیوستی",  
    width: 1500,  
    height: 800,  
    url: SelectLink};  
SP.UI.ModalDialog.showModalDialog(options);  
    } 
</script> 
بازکردن هایپرلینک ها از داخل دیتا گرید به صورت پاپ آپ (include)
<script> 
form = ALL_FORMS[0].Form.FormTemplate;  
function RenderLink(name) {  
debugger  
        var htmlLink = '<a href="#" onclick="OpenUrl()">'+name+'</a>'; 
        return htmlLink;  
    }   
function OpenUrl() {  
debugger  
var SelectLink = form.GetControl("c_GridItem").InputControl.GetSelectedItem().__FullPath ;  
var options = {  
    title: "فایل پیوستی",  
    width: 1500,  
    height: 800,  
    url: SelectLink};  
SP.UI.ModalDialog.showModalDialog(options);  
    } 
</script> 
بازکردن هایپرلینک ها از داخل دیتا گرید به صورت تب جدید (include)
<script> 
document.querySelector("#div_PF_Main > div:nth-child(2)").hidden = true 
</script> 
<script> 
form = ALL_FORMS[0].Form.FormTemplate;  
function RenderLink(name) {  
debugger  
        var htmlLink = '<a href="#" onclick="OpenUrl()">'+name+'</a>'; 
        return htmlLink;  
    }   
function OpenUrl() {  
debugger  
var SelectLink = form.GetControl("c_GridItem").InputControl.GetSelectedItem().__FullPath ;  
var options = {  
    title: "فایل پیوستی",  
    width: 1500,  
    height: 800,  
    url: SelectLink};  
window.open(SelectLink,"_blank") 
    } 
</script> 
بازکردن هایپرلینک ها از داخل دیتا گرید به صورت تب جدید (include)
<script> 
document.querySelector("#div_PF_Main > div:nth-child(2)").hidden = true 
</script> 
<script> 
form = ALL_FORMS[0].Form.FormTemplate;  
function RenderLink(name) {  
debugger  
        var htmlLink = '<a href="#" onclick="OpenUrl()">'+name+'</a>'; 
        return htmlLink;  
    }   
function OpenUrl() {  
debugger  
var SelectLink = form.GetControl("c_GridItem").InputControl.GetSelectedItem().__FullPath ;  
var options = {  
    title: "فایل پیوستی",  
    width: 1500,  
    height: 800,  
    url: SelectLink};  
window.open(SelectLink,"_blank") 
    } 
</script> 
بررسی وجود داشتن آیتم تکراری در گرید خاص  (include)
var members = []; 
var gridItems =form.GetControl("c_grid").InputControl.GetAllItems();   
a = Number(gridItems.length); 
for (var i=0; i < a; i++){ 
    members.push(gridItems[i].Member); 

if(hasDuplicates(members)){ 
    alert("عضو تکراری در کارگروه وجود دارد!") 
}else{ 
    form.SaveAndExit(); 
اسکریپت باز کردن پی دی اف با دکمه داخل گرید  (include)
form = ALL_FORMS[0].Form.FormTemplate;  
function RenderButton() {  
debugger  
        var htmlButton = '<input type="button" ';
htmlButton += ' class="k-button sg-button" onclick="OpenUrl()" value="مشاهده"></input>'  
        return htmlButton;  
    }  
function OpenUrl() {  
debugger  
var SelectLink = form.GetControl("c_EntireDoc").InputControl.GetSelectedItem().UrlFile;  
SelectLink1 =SelectLink.substring(SelectLink.indexOf(",")+1);  
var options = {  
    title: "فایل پیوستی",  
    width: 1500,  
    height: 800,  
    url: SelectLink};  
window.open(SelectLink1,"_blank"); 
کد  رفرش گرید (include)
<script> 
function onCloseCallback_Reload(dialogResult, returnValue) {   
       ALL_FORMS[0].Form.FormTemplate.GetControl("c_Control1").ReloadValue(); 
    } 
function EditBook(){ 
form = ALL_FORMS[0].Form.FormTemplate; 
var ID = form.GetControl("c_Control1").InputControl.GetSelectedItem().ID ; 
var options = { 
    title: "ثبت آثار مولفین و مترجمان"  , 
    width: 1500, 
    height: 1000, 
    url: "url" + ID  +"&isdlg=1", 
dialogReturnValueCallback : onCloseCallback_Reload }; 
SP.UI.ModalDialog.showModalDialog(options); 

</script> 
با توجه به کد بالا این تکه کد در یکی از فیلد های گرید قرار میگیرد 
'<input type="button" class="k-button" onclick="EditBook()" value="ویرایش"></input>' 
زمانی که میخواهیم در یک گرید مقدار یک ستون تکراری نباشد
var rows = form.GetControl("c_Grid").InputControl.GetAllItems(); 
var gridpack = form.GetControl("c_Grid2").InputControl.GetAllItems(); 
var item =  form.GetControl("c_Grid2").InputControl.GetSelectedItem(); 
eachgridmenu = gridpack[i]; 
var result = true; 
var service = item.ServiceDes 
rows.forEach(row => { 
    if(row.ServiceDes == service){ 
        result = false 
    } 
}); 
if(result){ 
    form.GetControl("c_Grid").InputControl.AddNewRow(item);     
تغییر رنگ ردیف به ازای مقدار هر ستون در گرید (در edit page در snippet گذاشته شود. )
jQuery(document).ready(function ($) { 
  setTimeout(addColor, 1500) 
  function addColor(){ 
    setTimeout(function () { 
      var trs = $("#scriptWPQ2 table:last-child tbody tr") 
      $(trs).each(function () { 
            var tds = trs.find('td') 
            var thistr = $(this) 
            tds.each(function(){ 
              if($(this).text() == 'فوری'){ 
                $(thistr).css('background','#b3e7ff') 
              } 
            }) 
      }) 
    },1500) 
  }  
$(document).on("click", "#pagingWPQ2next,#pagingWPQ2prev", function () { 
    setTimeout(addIcon, 1500) 
  }) 
}) 
تغییر دستی جای ردیف های گرید
var c = form.GetControl("c_DEG");
var grid = $(c.InputControl.CTRL_GRID).data("kendoGrid");   
moveGridRowUp(grid);
  function moveGridRowUp(grid) 
    {
     var row = grid.select();
     if (row)
   {
          var dataItem = grid.dataItem(row);
          var index = grid.dataSource.indexOf(dataItem);
          var newIndex = Math.max(0, index - 1);
          if (newIndex != index) 
          {
            grid.dataSource.remove(dataItem);
          grid.dataSource.insert(newIndex, dataItem);
        }
   }
 }
sort کردن در گرید
var grid = $(form.GetControl("yourDataGrid").InputControl.CTRL_GRID).data("kendoGrid");
var dsSort = [];
dsSort.push({ field: "Title", dir: "asc" });
dsSort.push({ field: "Name", dir: "asc" });
grid.dataSource.sort(dsSort);
پنهان کردن دکمه های گرید
form = ALL_FORMS[0].Form.FormTemplate;
gridDetail = form.GetControl('Name_Grid') ; 
HideBtn = gridDetail.InputControl.CTRL_BUTTON_DELETE;
HideBtn.disabled = true
ضبط پیام صوتی

زمان هر پیام صوتی 5 دقیقه است