S H A R E P O I N T C E N T E R

آموزش پاورفرم - اسکریپت های کاربردی


اسکریپت‌های مربوط به Data Grid

 Name

یک نام منحصر به فرد برای کنترل ارائه میدهد

Binding

نشان می دهد که آیا کنترل:

1)Unbound. کنترل داده‌های خود را در یک لیست جداگانه ذخیره می کند. جزئیات اصلی را با استفاده از آموزش کنترل DataEntryGrid ببینید.

2) Bound to a list column: هنگامی که به یک ستون متنی چند خطی (متن ساده) متصل می شود، ردیف های جزئیات را در قالب XML ذخیره می کند.

Enabled for new records

هنگامیکه فرم‌ها رکورد جدیدی را کنترل می‌کنند، تنظیم می‌کند کنترل فعال یا غیرفعال شود.

 

Enabled for existing records

 هنگامیکه فرم‌ها رکورد موجود را کنترل می‌کنند، تنظیم می‌کند کنترل فعال یا غیرفعال شود.

Required

cotnrol را به عنوان نیازمندی علامت گذاری می کند.

به طور پیش فرض، سیستم فیلدهای مورد نیاز را می شناسد و آنها را با این پرچم علامت گذاری می کند. علاوه بر این، اگر ستون محدود نشده باشد، می‌توان کنترل‌ها را به‌عنوان event مورد نیاز علامت‌گذاری کرد.

Enabled Formula

یک عبارت تنظیم کنید سپس در طول زمان اجرا ارزیابی می شود و کنترل را فعال یا غیرفعال می کند.

عبارت باید در جاوا اسکریپت باشد و باید یک مقدار boolean برگرداند.

وابستگی‌های بین کنترل‌ها به‌طور خودکار شناسایی می‌شوند و هر بار که کنترلی منجر به تغییر میشود، عبارت دوباره محاسبه می‌شود.

مثال:

Code

form.GetControl(“c_Status”).GetValue() != “Open” && form.UserInGroup(“Administrators”)

Visibility Formula

یک فرمول معتبر (با استفاده از جاوا اسکریپت) تعریف کنید که در طول زمان اجرا برای نمایش یا پنهان کردن کنترل ارزیابی می شود.

عبارت باید یک مقدار boolean برگرداند.

مثال:

Code

form.FieldValue(“c_Status”) != “Rejected” || form.UserID() == “1”

Value provided by the user

با این انتخاب، شبکه داده‌ای به فهرست دیگری محدود نمی‌شود، اما داده‌های آن در همان فهرست در یک ستون متن ساده چند خطی ذخیره می‌شوند.

List Query

یک query لیست از پیش تعریف شده به مقدار کنترل محدود می شود. بنابراین در هنگام مقداردهی اولیه فرم، query لیست مشخص شده اجرا می شود و شبکه داده ها را متصل می کند.

Width

عرض کنترل را مشخص می کند.

هنگامی که مقدار صفر باشد، حداکثر عرض مجاز استفاده خواهد شد.

Height

ارتفاع کنترل را مشخص می کند.

اگر مقدار صفر باشد، ویژگی height تنظیم نمی شود.

H.Alignment

alignment افقی parent cell را تعریف می کند (values : left, right, center)

V.Alignment

alignment عمودی parent cell را تعریف می کند (values : top, bottom, center)

Fore Color

قابل اجرا نیست.

Back Color

قابل اجرا نیست.

Cell Color

رنگ parent cell را مشخص می کند.

Font Size

اندازه فونت متن را تعریف می کند.

Margin

حاشیه اعمال شده برای کنترل را تنظیم می کند، یعنی فاصله بین کنترل و حاشیه‌های سلول.

Font Bold

پهنای فونت استفاده شده را تغییر می دهد.

Italics

استایل فونت متن کنترل را تغییر می دهد.

AllowInsert

اجازه می دهد تا record های جدید در grid اضافه شوند.

AllowUpdate

به کاربران امکان به روز رسانی record ها را می دهد.

AllowDelete

به کاربران امکان حذف record ها را می دهد.

UseKeyNavigation

این ویژگی (true/false) این قابلیت را برای کاربر فراهم می کند که با استفاده از کلید TAB یا SHIFT+TAB برای مسیر عقب، از سلولی به سلول دیگر بپرد.

ButtonsHorizontalPosition

موقعیت افقی دکمه‌های New/Delete را در رابطه با grid تنظیم می کند.

ButtonsVerticalPosition

موقعیت عمودی دکمه‌های New/Delete را در رابطه با grid تنظیم می کند.

ButtonsPositioningMode

حالت موقعیت یابی دکمه های New/Delete را تنظیم می کند. "Inline" به این معنی است که دکمه‌ها در حالت موقعیت یابی مطلق بدون گرفتن فضای اضافی در پایین (یا بالا بسته به alignment) grid نمایش داده می شوند. زمانی که می خواهید کنترل های اضافی را در کنار دکمه ها اضافه کنید مفید است.

InsertButtonImageURL

یک تصویر را به جای کلید ‘New Record’ رندر کنید.

DeleteButtonImageURL

یک تصویر را به جای کلید ‘Delete Record’ رندر کنید.

DataItemChangedScript

می توانید یک اسکریپت بنویسید که پس از تغییر مقدار داده ها اجرا شود. event فقط در صورت استفاده از کنترل‌های موجود بالا می‌رود. پارامتر "fieldName" حاوی نام خاصیت است که تغییر را ایجاد کرده است. می‌توانید با استفاده از متد control.InputControl.GetSelectedItem() dataitem زیرلایه را دریافت کنید و با استفاده از متد item.SetValue(fieldName, value) مقدار یک ویژگی را در آیتم تغییر دهید.

SelectionChangedScript

می توانید اسکریپتی بنویسید که پس از تغییر انتخاب اجرا شود. متغیر " item " حاوی آیتم انتخاب شده یا تهی است اگر grid هیچ موردی انتخاب نشده باشد.

مثال:

Code

if(item != null)

}

 alert(item.Title);

{

DataLoadedScript

شما می توانید یک اسکریپت بنویسید که پس از بارگیری داده های داخل datagrid (زمانی که کنترل در یک لیست کوئری محدود شده است) اجرا شود. متغیر " items " حاوی موارد بازیابی شده در دسترس است.

این زمان مناسب برای ایجاد تغییرات در داده‌های بارگذاری شده است، قبل از اینکه در نهایت در کنترل DataEntryGrid قرار گیرند.

Code

for (var i=0; i < items.length; i++)

}

   items[i].KPILookup = GetNameFromLookup(items[i].KPILookup);

{

LoadCompletedScript

پس از قرار دادن داده ها در grid رخ می دهد (با فرض اینکه کنترل به یک جستجوی فهرست محدود شده است). متغیر " items" در دسترس است که شامل موارد بازیابی شده است.

CellEnteringEditScript

 می‌توانید اسکریپتی بنویسید که وقتی یک سلول grid وارد حالت ویرایش می‌شود، اجرا می‌شود و امکان بستن سلول و لغو فرآیند ویرایش را فراهم می‌کند.

شی "e" حاوی پارامترهای event است، و برای لغو ویرایش می توانید e.Cancel را روی true تنظیم کنید.

e.FieldName  نام ستونی است که در حال ویرایش است.

e.DataItem  شامل داده های رکورد انتخاب شده فعلی است.

مثال:

Code

if (e.FieldName == ‘Title’ && e.DataItem.Description == ‘Skip editing’)

}

e.Cancel=true;

{

ExistingControlCreatedScript

شما می توانید یک اسکریپت بنویسید که پس از ایجاد یک کنترل موجود در یک سلول ویرایشی 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’);

{

Fields

فیلدهای grid ورودی داده را اضافه کنید

Properties

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 یک منوی کشویی را نمایش می دهد که برای اهداف فیلتر استفاده می شود.

Values

هنگامی که کنترل به یک لیست محدود می شود، جفت نام/مقدار را برای به روز رسانی ویژگی های مورد اضافه کنید. مقادیر می توانند ثابت یا محاسبه شده باشند. (یعنی Name=Priority، Value=High یا Name=Customer، Value={value:c_ID}. می توانید از کلمه کلیدی {ParentID} برای ویژگی مقدار برای تنظیم شناسه رکورد والد استفاده کنید (رویداد اگر هنوز ذخیره نشده است).

Properties

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);

{

 

مطالب مرتبط

ارسال دیدگاه

آخرین نوشته ها