آموزش پاورفرم - اسکریپت های کاربردی
یک نام منحصر به فرد برای کنترل ارائه میدهد
Binding
نشان می دهد که آیا کنترل:
1)Unbound. کنترل دادههای خود را در یک لیست جداگانه ذخیره می کند. جزئیات اصلی را با استفاده از آموزش کنترل DataEntryGrid ببینید.
2) Bound to a list column: هنگامی که به یک ستون متنی چند خطی (متن ساده) متصل می شود، ردیف های جزئیات را در قالب XML ذخیره می کند.
هنگامیکه فرمها رکورد جدیدی را کنترل میکنند، تنظیم میکند کنترل فعال یا غیرفعال شود.
Enabled for existing records
هنگامیکه فرمها رکورد موجود را کنترل میکنند، تنظیم میکند کنترل فعال یا غیرفعال شود.
cotnrol را به عنوان نیازمندی علامت گذاری می کند.
به طور پیش فرض، سیستم فیلدهای مورد نیاز را می شناسد و آنها را با این پرچم علامت گذاری می کند. علاوه بر این، اگر ستون محدود نشده باشد، میتوان کنترلها را بهعنوان event مورد نیاز علامتگذاری کرد.
یک عبارت تنظیم کنید سپس در طول زمان اجرا ارزیابی می شود و کنترل را فعال یا غیرفعال می کند.
عبارت باید در جاوا اسکریپت باشد و باید یک مقدار boolean برگرداند.
وابستگیهای بین کنترلها بهطور خودکار شناسایی میشوند و هر بار که کنترلی منجر به تغییر میشود، عبارت دوباره محاسبه میشود.
مثال:
Code
form.GetControl(“c_Status”).GetValue() != “Open” && form.UserInGroup(“Administrators”)
یک فرمول معتبر (با استفاده از جاوا اسکریپت) تعریف کنید که در طول زمان اجرا برای نمایش یا پنهان کردن کنترل ارزیابی می شود.
عبارت باید یک مقدار boolean برگرداند.
مثال:
Code
form.FieldValue(“c_Status”) != “Rejected” || form.UserID() == “1”
با این انتخاب، شبکه دادهای به فهرست دیگری محدود نمیشود، اما دادههای آن در همان فهرست در یک ستون متن ساده چند خطی ذخیره میشوند.
یک query لیست از پیش تعریف شده به مقدار کنترل محدود می شود. بنابراین در هنگام مقداردهی اولیه فرم، query لیست مشخص شده اجرا می شود و شبکه داده ها را متصل می کند.
عرض کنترل را مشخص می کند.
هنگامی که مقدار صفر باشد، حداکثر عرض مجاز استفاده خواهد شد.
ارتفاع کنترل را مشخص می کند.
اگر مقدار صفر باشد، ویژگی height تنظیم نمی شود.
alignment افقی parent cell را تعریف می کند (values : left, right, center)
alignment عمودی parent cell را تعریف می کند (values : top, bottom, center)
قابل اجرا نیست.
قابل اجرا نیست.
رنگ parent cell را مشخص می کند.
اندازه فونت متن را تعریف می کند.
حاشیه اعمال شده برای کنترل را تنظیم می کند، یعنی فاصله بین کنترل و حاشیههای سلول.
پهنای فونت استفاده شده را تغییر می دهد.
استایل فونت متن کنترل را تغییر می دهد.
اجازه می دهد تا record های جدید در grid اضافه شوند.
به کاربران امکان به روز رسانی record ها را می دهد.
به کاربران امکان حذف record ها را می دهد.
این ویژگی (true/false) این قابلیت را برای کاربر فراهم می کند که با استفاده از کلید TAB یا SHIFT+TAB برای مسیر عقب، از سلولی به سلول دیگر بپرد.
موقعیت افقی دکمههای New/Delete را در رابطه با grid تنظیم می کند.
موقعیت عمودی دکمههای New/Delete را در رابطه با grid تنظیم می کند.
حالت موقعیت یابی دکمه های New/Delete را تنظیم می کند. "Inline" به این معنی است که دکمهها در حالت موقعیت یابی مطلق بدون گرفتن فضای اضافی در پایین (یا بالا بسته به alignment) grid نمایش داده می شوند. زمانی که می خواهید کنترل های اضافی را در کنار دکمه ها اضافه کنید مفید است.
یک تصویر را به جای کلید ‘New Record’ رندر کنید.
یک تصویر را به جای کلید ‘Delete Record’ رندر کنید.
می توانید یک اسکریپت بنویسید که پس از تغییر مقدار داده ها اجرا شود. event فقط در صورت استفاده از کنترلهای موجود بالا میرود. پارامتر "fieldName" حاوی نام خاصیت است که تغییر را ایجاد کرده است. میتوانید با استفاده از متد control.InputControl.GetSelectedItem() dataitem زیرلایه را دریافت کنید و با استفاده از متد item.SetValue(fieldName, value) مقدار یک ویژگی را در آیتم تغییر دهید.
می توانید اسکریپتی بنویسید که پس از تغییر انتخاب اجرا شود. متغیر " item " حاوی آیتم انتخاب شده یا تهی است اگر grid هیچ موردی انتخاب نشده باشد.
مثال:
Code
if(item != null)
}
alert(item.Title);
{
شما می توانید یک اسکریپت بنویسید که پس از بارگیری داده های داخل datagrid (زمانی که کنترل در یک لیست کوئری محدود شده است) اجرا شود. متغیر " items " حاوی موارد بازیابی شده در دسترس است.
این زمان مناسب برای ایجاد تغییرات در دادههای بارگذاری شده است، قبل از اینکه در نهایت در کنترل DataEntryGrid قرار گیرند.
Code
for (var i=0; i < items.length; i++)
}
items[i].KPILookup = GetNameFromLookup(items[i].KPILookup);
{
پس از قرار دادن داده ها در grid رخ می دهد (با فرض اینکه کنترل به یک جستجوی فهرست محدود شده است). متغیر " items" در دسترس است که شامل موارد بازیابی شده است.
میتوانید اسکریپتی بنویسید که وقتی یک سلول grid وارد حالت ویرایش میشود، اجرا میشود و امکان بستن سلول و لغو فرآیند ویرایش را فراهم میکند.
شی "e" حاوی پارامترهای event است، و برای لغو ویرایش می توانید e.Cancel را روی true تنظیم کنید.
e.FieldName نام ستونی است که در حال ویرایش است.
e.DataItem شامل داده های رکورد انتخاب شده فعلی است.
مثال:
Code
if (e.FieldName == ‘Title’ && e.DataItem.Description == ‘Skip editing’)
}
e.Cancel=true;
{
شما می توانید یک اسکریپت بنویسید که پس از ایجاد یک کنترل موجود در یک سلول ویرایشی grid اجرا می شود (فقط در مواردی که فیلدهایی با Type = Existing). این زمانی مفید است که بخواهیم دستکاری اضافی روی کنترلی که برای ویرایش آیتم داده استفاده می شود اضافه کنیم.
شی 'e' حاوی پارامترهای event است:
e.FieldName نام ستونی است که در حال ویرایش است.
e.DataItem record واقعی است.
e.Control کنترل فرمی است که در داخل سلول ایجاد می شود.
مثال:
Code
if (e.FieldName == ‘Title’ && e.DataItem.ItemColor == ‘Red’)
}
e.Control.SetBackColor(‘red’);
{
فیلدهای grid ورودی داده را اضافه کنید
Name: نام رشته. باید با یک حرف شروع شود و فقط شامل حروف، اعداد و کاراکترunderscore باشد
Header: هدر field
Type:نوع کنترل مقادیر ممکن عبارتند از Textbox، DatePicker، Combobox، Checkbox، Existing، NoEdit(برای ایجاد یک فیلد غیر قابل ویرایش و فقط خواندنی)
ExistingControlName: وقتی نوع کنترل «Existing» است، میتوانید نام یک کنترل موجود را روی فرم تنظیم کنید (معمولاً باید برای این منظور مخفی و اختصاص داده شود). این کنترل در فرم ورود داده ها استفاده خواهد شد.
Width: عرض ستون grid برای اندازه گذاری خودکار، خالی بگذارید.
DisplayFormat: نحوه نمایش مقدار در grid داده را نشان می دهد. مقادیر ممکن عبارتند از:
- (نشان دهنده بدون قالب بندی است، مقدار را همانطور که هست نشان می دهد)
ValueField یا DisplayField برای کنترل های جستجو (ID;#TITLE)،
تاریخ برای فیلدهای تاریخ (می توان در ارتباط با ویژگی FormatString استفاده کرد)،
DateTime برای فیلدهای تاریخ-زمان (می توان در ارتباط با ویژگی FormatString استفاده کرد)،
Number (می تواند همراه با ویژگی FormatString استفاده شود).
FormatString: فرمت فیلدهای Date، DateTime و Number را تنظیم می کند.
For example #,##0.00 orMM/dd/yyyy
Required: مشخص می کند که آیا فیلد مورد نیاز است یا خیر.
BackColor: رنگ پس زمینه سلول
ForeColor: رنگ پیش زمینه سلول
FontBold: ضخامت متن
FontSize: اندازه فونت استفاده شده
HAlign: Alignment افقی متن را تنظیم می کند. مقادیر ممکن: – (default alignment)، Left, Right, Center
Values: آرایه ای از مقادیر رشته ای که وقتی نوع ComboBox باشد به عنوان منبع داده کنترل استفاده می شود
DefaultFieldValue: مقدار پیش فرضی که باید به فیلد در موارد جدید داده شود را مشخص می کند. مقدار می تواند شامل عبارتی باشد که به کنترل دیگری اشاره دارد، به عنوان مثال {c_Title} به منظور بازیابی متن از کنترلی به نام c_Title.
CustomCellTemplateFormula: شما می توانید یک فرمول جاوا اسکریپت سفارشی تعریف کنید که قرار است در زمان اجرا برای تولید محتوای سلولی ارزیابی شود. از نام فیلدهای داده به عنوان متغیر استفاده کنید.
example: ‘<b>’ + Title.toUpperCase() + </b>’
ColumnFiltering: اگر انتخاب شده باشد، وقتی کاربر روی این ستون کلیک می کند، grid یک منوی کشویی را نمایش می دهد که برای اهداف فیلتر استفاده می شود.
هنگامی که کنترل به یک لیست محدود می شود، جفت نام/مقدار را برای به روز رسانی ویژگی های مورد اضافه کنید. مقادیر می توانند ثابت یا محاسبه شده باشند. (یعنی Name=Priority، Value=High یا Name=Customer، Value={value:c_ID}. می توانید از کلمه کلیدی {ParentID} برای ویژگی مقدار برای تنظیم شناسه رکورد والد استفاده کنید (رویداد اگر هنوز ذخیره نشده است).
Name: نام داخلی ستون
Value: مقدار پیش فرض ستون. مقادیر ثابت یا مقادیر محاسبه شده را بر اساس کنترل های فرم (به عنوان مثال {value:Field1}) تنظیم کنید. میتوانید از کلمه کلیدی {ParentID} برای ویژگی مقدار برای تنظیم شناسه رکورد والد (رویداد اگر هنوز ذخیره نشده است) استفاده کنید.
RecordListQueries
لیست Querieهای اضافی را تعریف کنید که برای هر رکورد آیتم بازیابی شده اجرا می شود. این ها می توانند برای بازیابی اطلاعات اضافی، حتی از لیست های دیگر، برای هر رکورد در DataGrid استفاده شوند.
Properties
ListQuery: نام query لیست
SearchTargetField: نام ستون داخلی query که می خواهیم معیاری را اعمال کنیم.
SearchSourceField: فیلدی که بر روی کنترل DataGrid تعریف شده است که مقدار آن به عنوان معیاری برای فیلتر کردن نتایج جستجوی لیست استفاده می شود.
SearchOperator: عملگر معیار. مقادیر ممکن: BeginsWith، Contains، Equals، NotEquals، Greater، GreaterOrEqual، Less، LessOrEqual، IsNull، IsNotNull
SearchType: نوع معیار. مقادیر ممکن: Text, Counter, Lookup, DateTime, Number
InitScript: این اسکریپت برای هر آیتم قبل از اجرای کوئری لیست اجرا می شود. متغیر " item" در دسترس است که حاوی رکورد فعلی است. میتوانید کد JS سفارشی بنویسید تا احتمالاً مقداری را در رکورد تغییر دهید، قبل از انجام جستجوی فهرست واقعی.
CallbackScript: اسکریپتی که اجرا خواهد شد، زمانی که کوئری لیست نتایج را برمی گرداند. متغیرهای " item" و " result" در دسترس هستند. item نشان دهنده رکورد جاری و result نشان دهنده نتایج جستجوی لیست بر اساس رکورد فعلی است. ویژگیهای موجود: result.ErrorMessage، result.ListItems
شایان ذکر است که می توانید با استفاده از InitScript و تنظیم e.Cancel = true، اجرای RecordListQuery را لغو کنید. به عنوان مثال، با استفاده از InitScript:
Code
if (form.GetControl(“c_SomeRandomControl”).GetValue() == “0”)
}
e.Cancel = true;
{
در کنترلهایی مانند Datagrid و DataEntryGrid نیز چند روش اضافی وجود دارد که میتواند به شما در مدیریت فیلدها و ردیفها در gridها کمک کند. آنها از ویژگی InputControl این کنترلها استفاده میکنند. روشهای موجود عبارتند از:
GetSelectedItem
این متد یک آیتم شی را با ردیف انتخاب شده grid برمی گرداند.
Code
var item = form.GetControl(“c_GridName”).InputControl.GetSelectedItem();
RefreshGrid
این متد محتوای grid را آپدیت میکند.
Code
form.GetControl(“c_GridName”).InputControl.RefreshGrid();
GetAllItems
این روش آرایه ای از تمام آیتم های شی را که به شبکه bound شده اند برمی گرداند
Code
var items = form.GetControl(“c_GridName”).InputControl.GetAllItems();
چند نمونه:
چگونه می توان مورد انتخاب شده را از شبکه ای به نام "c_GridName" دریافت کرد و مقدار عنوان را روی برچسبی به نام "c_Label" تنظیم کرد.
Code
var item = form.GetControl(“c_GridName”).InputControl.GetSelectedItem();
form.GetControl(“c_Label”).SetValue(item.Title);
نحوه loop زدن همه آیتم ها و یافتن مجموع فیلدی به نام " Quantity"
Code
var sum = 0;
var items = form.GetControl(“c_GridName”).InputControl.GetAllItems();
for (var i=0; i < items.length; i++)
}
sum = sum + items[i].Quantity;
{
ExportToExcel
همانطور که از نام آن پیداست، این تابع داده ها را به یک فایل اکسل export می کند که آماده ذخیره یا باز شدن است. تابع سه پارامتر را می پذیرد که در زیر توضیح داده شده است:
ExportToExcel(array of columns, string file name, string sheet name)
ستون ها باید آرایه ای از اشیاء با ویژگی های " field" و " title" باشند. اگر هیچ ستونی ارائه نشود، تمام ستونهای قابل مشاهده شبکه export میشوند.
مثال:
Code
var grid = form.GetControl(“c_Cases”).InputControl;
var cols = [];
cols.push({field:”CaseNumber”, title:”Case Number”});
cols.push({field:”Title”, title:”Title”});
cols.push({field:”CaseType”, title:”Case Type”});
cols.push({field:”CType”, title:”Case Category”});
grid.ExportToExcel(cols, “Cases.xls”, “Cases”);
SelectRowByIndex
همانطور که از نام آن پیداست، این تابع یک ردیف در DataGrid انتخاب می کند. تابع یک پارامتر را می پذیرد، همانطور که در زیر توضیح داده شده است:
SelectRowByIndex(integer theIndex)
مثال:
Code
form.GetControl(“c_DataGrid”).InputControl.SelectRowByIndex(1);
RunListQueries(all, callback)
این تابع تمام query های لیستی را که در ویژگی DataGrid به نام RecordListQueries اعلام شده اند اجرا می کند. تابع پارامتر "all" را می پذیرد که موردی را توصیف می کند که کاربر بخواهد جستجوهای لیست را برای همه موارد DataGrid یا فقط موارد قابل مشاهده اجرا کند، همانطور که در زیر توضیح داده شده است:
مثال:
Code
form.GetControl(“c_DataGrid”).InputControl.RunListQueries(true, function(){ });
مقدار دهی به آیتم های گرید
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);
}
پنهان کردن ستون هایی از گرید
ctrl = form.GetControl("DataEntryGrid name");
$(ctrl.InputControl.CTRL_GRID).data("kendoGrid").hideColumn("Column name");
تغییر دستی جای ردیف های گرید
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);
{
{
{
اضافه کردن ردیف به دیتا انتری گرید
// gets dataentrygrid
var compgrd = form.GetControl("yourDataEntryGrid").InputControl;
var grid = $(compgrd.CTRL_GRID).data("kendoGrid");
//creates new item
var newItem = compgrd.CreateEmptyItem();
newItem.__Status = "New";
newItem.Title = "Some Title";
newItem.randomProperty = "Enter a value";
//adds new item
grid.dataSource.add(newItem);
مقدار دهی آیتم های گرید با ایجاد شرط در DataEntryGrid's LoadCompleteScript
for (var i = 0; i < items.length; i++)
}
if (items[i].column3 == "high")
}
items[i].SetValue("column3", "Need to fix..");
{
{
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);
گرفتن مقداری از آیتم select شده در گرید و نشاندن آن در کنترلی دیگر
var item = form.GetControl("c_GridName").InputControl.GetSelectedItem();
form.GetControl("c_Label").SetValue(item.Title);
جمع کردن مقادیر یک ستون از گرید (Quantity) و نشاندن آن در کنترلی دیگر
var sum = 0;
var items = form.GetControl("c_GridName").InputControl.GetAllItems();
for (var i=0; i < items.length; i++)
}
sum = sum + items[i].Quantity;
{
تازه سازی گرید
form.GetControl("c_GridName").InputControl.RefreshGrid();
پنهان کردن دکمه های گرید
form = ALL_FORMS[0].Form.FormTemplate;
gridDetail = form.GetControl('Name_Grid') ;
HideBtn = gridDetail.InputControl.CTRL_BUTTON_DELETE;
HideBtn.disabled = true
اضافه کردن یک ردیف با شرایط خاص از یک کنترل Data entry grid به یک یک کنترل Data entry grid دیگر
var Status =form.GetControl("c_ Status ").GetValue();
var firstGrid = form.GetControl("c_firstGrid").InputControl.GetAllItems();
for (var i = 0; i < c_firstGrid.length; i++)
}
var VColumn1= c_firstGrid[i]. Column1;
var Vcolumn2= c_firstGrid[i]. Column2;
var Vcolumn3= c_firstGrid[i]. Column3;
each_item_firstGrid = c_firstGrid[i];
var Value=form.GetControl("c_Value").GetValue();
if(Value >=1)
}
var item = new Object();
item. SecondGrid_Column1 = VColumn1;
item. SecondGrid_Column2 = Vcolumn2;
item. SecondGrid_Column3 = Vcolumn3;
form.GetControl("c_ SecondGrid ").InputControl.AddNewRow(item);
{
{
شماره ردیف به صورت اتومات
کد بالا را در قسمت scriptsدر تنظیمات کنترل گریدی قراردهید .
index = 0 ;
gridPhase = form.GetControl('DataEntryGrid Name') ;
gridItems = gridPhase.InputControl.GetAllItems();
for (var i=0; i < gridItems.length; i++)
}
index += 1 ;
debugger;
itemEach = gridItems[i] ;
itemEach.SetValue('Row Number Field Name' , index);
{
سپس کد ذیل را در extra در قسمت DataLoadedScript وارد نمائید
.
index = 0 ;
for (var i=0; i < items.length; i++)
}
index += 1 ;
itemEach = items[i] ;
itemEach.Row Number Field Name = index ;
{
مقدار دهی به آیتم های Grid با Look up زدن به لیست
if (fieldName == "Grid Name")
}
function callback(e)
{
if (e.ErrorMessage)
}
alert("Error");
{
else
}
if (e.ListItems.length > 0)
{
// alert("items found");
var I=e.ListItems[0].ID;
item.SetValue("ID", I);
var FirstValue=e.ListItems[0].Gender;
item.SetValue("Gender", FirstValue);
var SecondValue=e.ListItems[0].Age;
item.SetValue("Age", SecondValue);
{
else
}
alert("no items found");
{
{
{
criteria = [];
var ss = new pf.SearchSpec();
ss.FieldName = "ID";
ss.FieldValue = pf.GetValueFromLookup(item.Title);
ss.Operator = "Equals"; //Equals,NotEquals,Greater,GreaterOrEqual,Less,LessOrEqual,IsNull,IsNotNull,BeginsWith,Contains,In, DateRangesOverlap
ss.Type = "Text";
criteria.push(ss);
form.LoadRecords("Site URL", "List Name", "", criteria, null, null, false, 0, callback);
{
چگونه امتیاز دهی به یک فایل را در SharePoint فعال کنیم؟
امیرحسین غلامیانتغییر عرض نمایش ستون ها
Fletch Skinnerتغییر عرض نمایش ستون ها
Chauffina CarrID Outcome ها در Flexi task
Fletch Skinner