getPinSeriesSettings (wbk, allSeries);
wbk. Задает рабочую книгу, экземпляр класса Workbook;
allSeries. Задает ряды рабочей книги.
Метод getPinSeriesSettings возвращает тело запроса блокировки рядов рабочей книги.
Для выполнения примера предполагается наличие на странице компонента WorkbookBox с наименованием «workbookBox» (см. «Пример создания компонента WorkbookBox») и наличие в рабочей книге вычисляемого ряда. Также необходимо в обработчике события открытия документа добавить следующий код:
//Создаем признак, который будет использоваться для того, чтобы определить, есть ли блокированные ряды в рабочей книге
var someSerieIsPinnedFlag;
//Переменная для хранения массива выбранных рядов
var selSeries;
//Кнопка, по нажатию на который блокируется или разблокируется выбранный ряд
var pinSerieButton = new PP.Ui.Button({
ParentNode: document.body, //Родительский узел DOM
Content: "Блокировать ряд", //Подпись
Click: PP.Delegate(onClickPinSerie)
});
//Обработчик нажатия кнопки "Блокировать ряд"
function onClickPinSerie()
{
//Создаем объект, содержащий ряд для блокирования/разблокирования
var series = {};
series.its = {};
series.its.it = [];
//Создаем объект, содержащий ряд для блокирования
var pinnedSerie = {
id: "",
k: PP.Mb.UINT32MAXVALUE
};
if (selSeries && selSeries.length > 0)
{
var selSerie = undefined;
//В зависимости от наличия блокированных рядов в рабочей книге, формируем объект, передаваемый методу
//pinSeries в качестве параметра
if (!someSerieIsPinnedFlag)
{
selSerie = selSeries[0];
pinnedSerie.id = selSerie.id;
pinnedSerie.k = selSerie.k;
}
else
{
for (var i = 0; i < selSeries.length; i++)
{
series.its.it.push({
k: selSeries[i].k,
id: selSeries[i].id,
kind: selSeries[i].kind
});
}
}
}
series.pinned = pinnedSerie;
//Устанавливаем блокировку в рабочей книге
wbk.getActiveSheet().setPinned(pinnedSerie.k != PP.Mb.UINT32MAXVALUE ? pinnedSerie : undefined);
//Получаем тело запроса блокировки рядов рабочей книги
var body = tsService.getPinSeriesSettings(wbk, series);
//Устанавливаем признак того, что рабочая книга изменена
wbk.setIsChanged(true);
//Посылаем на сервер запрос блокировки рядов рабочей книги
tsService._send(body, PP.Delegate(onResponse));
}
//Обработчик окончания выполнения метода pinSeries
function onResponse()
{
//Обновляем весь компонент для отображения рабочей книги
workbookBox.refreshAll();
}
//Обработчик окончания взаимодействия с репозиторием. Служит для установки доступности кнопки
//"Блокировать ряд" в зависимости от возможности блокировки выбранного ряда и установки признака
//наличия блокированных рядов в рабочей книге
metabase.EndRequest.add(PP.Delegate(function(){
selSeries = wbk.getActiveSheet().getSelectedSeries();
if (selSeries.length == 1 && selSeries[0].calc && selSeries[0].calc.formula)
{
pinSerieButton.setEnabled(true);
}
else
{
pinSerieButton.setEnabled(false);
}
someSerieIsPinnedFlag = (wbk.getActiveSheet().getPinned() ? true : false);
}));
После выполнения примера на html-странице будет размещена кнопка с наименованием «Блокировать ряд». При нажатии на кнопку выбранный вычисляемый ряд будет заблокирован.
См. также: