Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Верхний тулбар IBN 4.7
Внешний вид и поведение верхнего тулбара, используемого в IBN 4.7 описывается при помощи следующего. xml-файла: Apps/Shell/Config/MetaView/@*****@***xml.
.xml-файл состоит из двух основных секций: <Toolbar> и <Commands>. В секции Toolbar описывается структура и внешний вид тулбара, в секции Commands – команды, которые выполняются при щелчке на кнопках тулбара.
Для того чтобы произведённые вами изменения не были потеряны при установке очередного обновления, рекомендуется создать собственный файл Apps/Custom/Config/MetaView/@*****@***xml:
<?xml version="1.0" encoding="utf-8" ?>
<MetaView>
<Toolbar>
<clear />
<add>
</add>
</Toolbar>
<Commands>
<clear />
<add>
</add>
</Commands>
</MetaView>
Между тегами <add> и </add> следует располагать свои кнопки и команды. Как это делать рассказано ниже. Тег <clear /> в начале секций Toolbar и Commands используется для того, чтобы очистить все прочие определения кнопок и команд. Т. е. при использовании тегов <clear /> тулбар будет создаваться «с нуля», а при отсутствии этих тегов, определения кнопок и команд будут добавлены к уже существующим кнопкам и командам.
Тулбар может содержать следующие типы элементов:
- кнопки (Button) сплит-кнопки (SplitButton) меню (Menu)
Сплит-кнопка отличается от меню тем, что ей может быть сопоставлена команда, т. е. при нажатии на сплит-кнопку может быть выполнено какое-то действие.

Допустимые атрибуты тегов Button, SplitButton и Menu:
- id – уникальный идентификатор (строка) text – текст кнопки. Допустимо использование значений из ресурсных файлов в формате {ClassName:KeyName}. Так, выражение {mon:Search} будет означать, что следует использовать значение ключа «Search» из файла mon. resx (*****. resx), расположенного внутри папки App_GlobalResources. imageUrl – путь к иконке commandName – идентификатор команды, описанной в секции Commands, которая будет выполнена при нажатии на кнопку. Данный атрибут применим только к тегам Button и SplitButton. align (Left, Right) – расположение кнопки. Если атрибут не задан, то кнопка будет расположена в левой части тулбара. itemSplitter (Left, Right) – следует ли вывести графический разделитель слева или справа от кнопки. Если атрибут не задан, разделитель не выводится.
В секции Commands описываются команды, выполняющиеся при щелчке на кнопках тулбара. Ниже представлен общий вид описания команды:
<Command id="Command1">
<CommandType>Navigate</CommandType>
...
</Command>
Тег CommandType определяет тип команды и может принимать следующие значения:
- Navigate – переход на другую страницу
- OpenWindow – открытие всплывающего окна
- OpenModalPopup – открытие на странице диалога, построенного на базе HTML-элемента DIV. OpenFrameModalPopup – открытие на странице диалога, построенного на базе HTML-элемента IFRAME.
- ServerAction – серверное действие (PostBack с вызовом обработчика)
- ClientAction – клиентское действие (JavaScript)
Рекомендуется вместо OpenModalPopup использовать OpenFrameModalPopup, т. к. по функциональности эти элементы идентичны, но OpenModalPopup значительно «утяжеляет» страницу, заметно снижая скорость работы.
Рассмотрим более подробно способы использования команд различных типов.
Navigate
Команда Navigate может содержать следующие теги:
· Url – строка, в которой указывается путь к странице, на которую будет сделан переход. Данный тег является обязательным.
· Target (строка) – название фрейма, в котором будет отображён результат. Основной фрейм IBN 4.7, предназначенный для отображения контента, имеет название «right».
· EnableHanler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды.
· BeforeClientScript (строка) – название JavaScript-функции, которая возвращает true или false. Если возвращается false, то выполнение команды прерывается. Функция принимает один параметр – params.
Серверный обработчик, описанный в теге EnableHanler, должен реализовать интерфейс ICommandEnableHandler, состоящий из метода IsEnable. Ниже приведён пример реализации серверного обработчика:
using Mediachase. Ibn. Web. UI. Controls. Util;
public class CanAdminHandler : ICommandEnableHandler
{
#region ICommandEnableHandler Members
public bool IsEnable(object Sender, object Element)
{
bool retval = false;
...
return retval;
}
#endregion
}
Пример:
<Command id="MC_ListApp_ManageList">
<CommandType>Navigate</CommandType>
<Url>~/Apps/ListApp/ListInfoView. aspx? class={QueryString:ViewName}</Url>
</Command>
В качестве параметров тега Url можно использовать следующие шаблоны:
- {QueryString:KeyName} – получить значение указанного ключа из коллекции QueryString текущей страницы {HttpContext:KeyName} – получить значение указанного ключа из коллекции HttpContext {Session:KeyName} – получить значение указанного ключа из переменной сессии {DataContext:KeyName} – получить значение указанного ключа из коллекции DataContext
· {Security:KeyName} – получить значение из контекста безопасности. KeyName может принимать следующие значения:
o CurrentUser (CurrentUserId) – ID текущего пользователя
- {DateTime:KeyName} – получить значение даты. KeyName может принимать следующие значения:
o Today (TodayStart) – начало текущего дня
o ThisWeek (ThisWeekyStart) - начало текущей недели
o ThisMonth (ThisMonthStart) - начало текущего месяца
o ThisYear (ThisYearStart) - начало текущего года
o Yesterday (YesterdayStart) - начало предыдущего дня
o LastWeek (LastWeekStart) - начало предыдущей недели
o LastMonth (LastMonthStart) - начало предыдущего месяца
o LastYear (LastYearStart) - начало предыдущего года
o TodayEnd – окончание текущего дня
o ThisWeekEnd - окончание текущей недели
o ThisMonthEnd - окончание текущего месяца
o ThisYearEnd - окончание текущего года
o YesterdayEnd - окончание вчерашнего дня
o LastWeekEnd - окончание текущей недели
o LastMonthEnd - окончание текущего месяца
o LastYearEnd - окончание текущего года
· [ClientParam:KeyName] – получить значение параметра, который придёт в коллекции CommandParameters команды.
· [ClientFunction:FunctionName] – получить значение JavaScript-функции. Данная функция должна принимать один параметр – params и возвращать строку, которая будет использована вместо данного шаблона.
OpenWindow
Команда OpenWindow может содержать следующие теги:
- Url (строка) – путь к странице (обычно. aspx), которая будет показана во всплывающем окне. Разрешено использовать шаблоны вида {TemplateType:KeyName}. Width (число) – ширина окна (640 по умолчанию) Height (число) – высота окна (480 по умолчанию) Left (число) – левая позиция окна (центрирование, если не указано) Top (число) – верхняя позиция окна (центрирование, если не указано) Scroll (True/False) – будет ли окно иметь полосу прокрутки Resize (True/False) – разрешено ли изменение размеров окна RefreshMethod (строка) – название скриптовой функции родительского окна, которая будет выполнена при закрытии всплывающего окна (*). Функция должна принимать один строковый параметр. Если этот параметр не задан, то будет произведено простое обновление родительского окна. UpdatePanelIds (строка) – список идентификаторов контролов типа UpdatePanel, которые необходимо обновить при закрытии окна (*). EnableHanler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды. BeforeClientScript (строка) – название JavaScript-функции, которая возвращает true или false. Если возвращается false, то выполнение команды прерывается. Функция принимает один параметр – params.
Строки, содержащие RefreshMethod и UpdatePanelIds, автоматически будут добавлены в Url в виде параметров QueryString.
(*) Поскольку в Web нет стандартной возможности для отслеживания закрытия всплывающих окон, то необходимо в самом всплывающем окне произвести некоторые дополнительные действия. Так, для обновления родительского окна достаточно выполнить следующий код:
CommandManager. RegisterRefreshParentWindowScript(this. Page, param);
Здесь param – это строковый параметр, котрый будет передан скриптовой функции RefreshMethod. Если параметры передавать не надо, либо RefreshMethod не задан, то следует передать в качестве значения param пустую строку.
Для того чтобы обновить родительское окно и одновременно закрыть всплывающее окно, следует использовать следующий код:
CommandManager. RegisterCloseOpenedWindowScript(this. Page, param);
Для того чтобы в родительском окне произошло обновление тех UpdatePanel, которые определены в xml-теге UpdatePanelIds, следует использовать следующие фрагменты кода:
CommandParameters cp = new CommandParameters(commandId);
CommandManager. RegisterRefreshParentWindowScript(this. Page, cp. ToString());
или
CommandParameters cp = new CommandParameters(commandId);
CommandManager. RegisterCloseOpenedWindowScript(this. Page, cp. ToString());
Здесь commandId - это строка, которая соответствует атрибуту id тега Command.
Пример:
<Command id="MC_TimeTracking_MultipleAdd">
<CommandType>OpenWindow</CommandType>
<Url>~/Apps/MultipleAdd. aspx? ViewName={QueryString:ViewName}</Url>
<Width>500</Width>
<Height>375</Height>
<Resize>False</Resize>
<Scroll>False</Scroll>
<UpdatePanelIds>UpdatePanel1,UpdatePanel2</UpdatePanelIds>
</Command>
CommandParameters cp = new CommandParameters("MC_TimeTracking_MultipleAdd");
CommandManager. RegisterRefreshParentWindowScript(this. Page, cp. ToString());
OpenModalPopup
Команда OpenModalPopup может содержать следующие теги:
- Url (строка) – путь к контролу (.ascx), который будет показан во всплывающем окне. Width (число) – ширина диалога (320 по умолчанию) Height (число) – высота диалога (240 по умолчанию) Left (число) – левая позиция диалога (200 по умолчанию) Top (число) – верхняя позиция диалога (150 по умолчанию) PopupTitle (строка) – заголовок диалога Drag (True/False) – разрешено ли перетаскивание диалога (по умолчанию – нет) UpdatePanelIds (строка) – список идентификаторов контролов типа UpdatePanel, которые необходимо обновить при закрытии диалога (**). EnableHanler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды. BeforeClientScript (строка) – название JavaScript-функции, которая возвращает true или false. Если возвращается false, то выполнение команды прерывается. Функция принимает один параметр – params.
Пример:
<Command id="MC_ListApp_AddMetaField">
<CommandType>OpenModalPopup</CommandType>
<Url>~/Apps/MetaFieldListEdit. ascx</Url>
<Width>600</Width>
<Height>440</Height>
<Left>20</Left>
<Top>20</Top>
<PopupTitle>{IbnFramework. ListInfo:tAddField}</PopupTitle>
</Command>
.ascx-контрол, отображаемый в диалоге, должен реализовать интерфейс IModalPopupControl, который состоит из метода BindData и двух public property - ContainerId и ScriptHidePopup.
Пример:
using Mediachase. Ibn. Web. UI. Controls. Util;
public partial class QuickAddControl : System. Web. UI. UserControl, IModalPopupControl
{
#region IModalPopupControl Members
public void BindData(string p)
{
}
public string ContainerId
{
get
{
if (ViewState["ContainerId"] != null)
return ViewState["ContainerId"].ToString();
else
return String. Empty;
}
set
{
ViewState["ContainerId"] = value;
}
}
public string ScriptHidePopup
{
get
{
if (ViewState["ScriptHidePopup"] != null)
return ViewState["ScriptHidePopup"].ToString();
else
return String. Empty;
}
set
{
ViewState["ScriptHidePopup"] = value;
}
}
#endregion
}
Для обновления родительского окна из ModalPopup надо сделать следующее
CHelper. UpdateModalPopupContainer(this, ContainerId);
Если родительское окно содержит UpdatePanels, но надо, чтобы обновилось всё окно по нажатию какой-либо кнопки в ModalPopup (напр. id=”Btn1”), следует использовать следующий код в Page_Load .ascx-контрола:
ScriptManager. GetCurrent(this. Page).RegisterPostBackControl(Btn1);
Для закрытия ModalPopup надо выполнить скрипт, определённый в свойстве ScriptHidePopup, например:
CloseButton. OnClientClick = String. Format("javascript:{{{0};}}", ScriptHidePopup);
Если требуется из ModalPopup выполнить команду типа OpenWindow, то это делается так:
CommandManager cm = CommandManager. GetCurrent(this. Page);
Dictionary<string, string> prms = new Dictionary<string, string>();
string command = cm. AddCommand(className, viewName, placeName, "MC_TimeTracking_MultipleAdd", prms);
MultipleAddLink. NavigateUrl = String. Format(
CultureInfo. InvariantCulture,
"javascript:{{{0};{1}}}", ScriptHidePopup, command);
Ниже показан внешний вид диалога (ModalPopup):

Если необходимо показать подобный диалог с произвольной страницы (напр. MyPage. aspx), требуется произвести следующие действия:
Создать. ascx-контрол, реализующий интерфейс IModalPopupControl. Назовём его MyControl. ascx Создать. xml-файл с именем “@*****@***xml” Заполнить этот файл следующим содержимым:<?xml version="1.0" encoding="utf-8" ?>
<MetaView>
<Commands>
<add>
<Command id="MyCommand">
<CommandType>OpenModalPopup</CommandType>
<Url>~/Apps/MyControl. ascx</Url>
<Width>300</Width>
<Height>200</Height>
<Left>100</Left>
<Top>100</Top>
<Drag>True</Drag>
<PopupTitle>Some Title</PopupTitle>
</Command>
</add>
</Commands>
</MetaView>
На странице MyPage для показа диалога использовать следующий код:CommandManager cm = CommandManager. GetCurrent(this. Page);
CommandParameters cp = new CommandParameters("MyCommand");
string command = cm. AddCommand("", "", "MyPage", cp);
Переменная command будет содержать строку, которую уже можно присваивать свойству NavigateUrl контрола HyperLink, предварительно добавив туда префикс “javascript:”
ServerAction
Команда ServerAction может содержать следующие теги:
- ConfirmationText (строка) – текст, выводимый в confirm-диалоге для подтверждения совершаемого действия. Если параметр не задан, confirm-диалог не отображается. Handler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", вызываемый для обработки команды. EnableHanler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды. BeforeClientScript (строка) – название JavaScript-функции, которая возвращает true или false. Если возвращается false, то выполнение команды прерывается. Функция принимает один параметр – params.
Пример:
<Command id="MC_ListApp_Selected_Delete">
<CommandType>ServerAction</CommandType>
<ConfirmationText>{mon:DeleteConfirm}</ConfirmationText>
<Handler>Mediachase. Ibn. DeleteSelectedItemsHandler, Mediachase. UI. Web</Handler>
</Command>
Серверный обработчик должен реализовать интерфейс ICommand, состоящий из метода Invoke. Ниже приведён фрагмент кода серверного обработчика:
using Mediachase. Ibn. Web. UI. Controls. Util;
using Mediachase. UI. Web. Apps. MetaUI. Grid;
public class DeleteHandler : ICommand
{
public void Invoke(object Sender, object Element)
{
}
}
ClientAction
Команда ClientAction может содержать следующие теги:
- ClientScript – строка, содержащая javascript. Разрешено использовать шаблоны вида {TemplateType:KeyName}. EnableHanler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды. BeforeClientScript (строка) – название JavaScript-функции, которая возвращает true или false. Если возвращается false, то выполнение команды прерывается. Функция принимает один параметр – params.
OpenFrameModalPopup
Команда OpenFrameModalPopup может содержать следующие теги:
- Url (строка) – путь к странице (.aspx), которая будет показана во фрейме всплывающего окна. Разрешено использовать шаблоны вида {TemplateType:KeyName}. Width (число) – ширина диалога (320 по умолчанию) Height (число) – высота диалога (240 по умолчанию) Left (число) – левая позиция диалога (200 по умолчанию) Top (число) – верхняя позиция диалога (150 по умолчанию) PopupTitle (строка) – заголовок диалога Drag (True/False) – разрешено ли перетаскивание диалога (по умолчанию – нет). UpdatePanelIds (строка) – список идентификаторов контролов типа UpdatePanel, которые необходимо обновить при закрытии диалога. EnableHandler (строка) – серверный обработчик, записанный в формате "<имя класса>, <имя сборки>", определяющий доступность команды. RefreshMethod (строка) – название скриптовой функции родительского окна, которая будет выполнена при закрытии всплывающего окна. Функция должна принимать один строковый параметр. Если этот параметр не задан, то будет произведено простое обновление родительского окна.
Для обновления родительского окна из FrameModalPopup можно сделать следующее:
CommandParameters cp = new CommandParameters(commandId);
CommandManager. RegisterRefreshParentFromFrameScript(this. Page, cp. ToString());
Если CommandParameters передавать не надо, либо RefreshMethod не задан, то можно передать в качестве второго параметра пустую строку. Здесь commandId - это строка, которая соответствует атрибуту id тега Command.
Для закрытия FrameModalPopup надо выполнить скрипт, подобный следующему:
if (Request["closeFramePopup"] != null)
{
CloseButton. OnClientClick =
String. Format(
"javascript:try{{window. parent.{0}();}}catch(ex){{}}",
Request["closeFramePopup"]);
}
Параметр "closeFramePopup" автоматически передаётся в QueryString для страницы, выводимой во фрейме.
Для того чтобы обновить родительское окно и одновременно закрыть всплывающее окно, следует использовать следующий код:
CommandParameters cp = new CommandParameters(commandId);
CommandManager. RegisterCloseOpenedFrameScript(this. Page, cp. ToString());


