HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


Note

This content does not apply to Commerce versions 14+.

CommandManager is a class for handling actions in Commerce Manager. The following command types are available:

  • **Navigate** – Navigation to another page. 

  • **OpenWindow** – Open popup in new window.

  • **OpenFrameModalPopup** – Open modal popup (IFrame) in current window.

  • **ServerAction** – Server action (POST) with calling of special server handler.

  • **ClientAction** – Client action with calling of predefined JavaScript.

## Commands defined in XML files

Commands are defined in the **View/Commands** section of an XML file and look like this:



The following example shows how to bind a command to a toolbar button simply by adding the **commandName** attribute with the command identifier to **Button**. 



## Navigate

The **navigate-type** command can contain the following tags:

  • **Url** (string) – URL to page for navigation.

  • **Target** (string) – Navigate to named frame.

  • **EnableHandler** – Server handler in the format "className, assemblyName" defining accessibility of the command.

The server handler must implement the **ICommandEnableHandler** interface.

### ICommandEnableHandler interface



**Example:**



### Dynamic parameters for Url parameter

You can use the following templates as dynamic parameters for the Url parameter.

  • **{QueryString:KeyName}** – Get value for **KeyName** parameter from QueryString for current page.

  • **{HttpContext:KeyName}** – Get value for KeyName from HttpContext.

  • **{Session:KeyName}** – Get value from KeyName from ASP.NET Session.

  • **{DataContext:KeyName}** – Get value from KeyName from DataContext.

  • **{Security:KeyName}** – Get value from security context. KeyName can get the following values:

    • **CurrentUser** (CurrentUserId) – ID of current user.

  • **{DateTime:KeyName}** – Get date value. Keyname can get following values for date:

    • **Today** (TodayStart) – Starting of current day.

    • **ThisWeek** (ThisWeekyStart) – Starting of current week.

    • **ThisMonth** (ThisMonthStart) – Starting of current month.

    • **ThisYear** (ThisYearStart) – Starting of current year.

    • **Yesterday** (YesterdayStart) – Starting of previous day.

    • **LastWeek** (LastWeekStart) – Starting of previous week.

    • **LastMonth** (LastMonthStart) – Starting of previous month.

    • **LastYear** (LastYearStart) – Starting of previous year.

    • **TodayEnd** – End for current day.

    • **ThisWeekEnd** – End of current week.

    • **ThisMonthEnd** – End of current month.

    • **ThisYearEnd** – End of current year.

    • **YesterdayEnd** – End of previous day.

    • **LastWeekEnd** – End of previous week.

    • **LastMonthEnd** – End of previous month.

    • **LastYearEnd** – End of previous year.

  • **\[ClientParam:ParameterName\]** – Gets parameter name from **CommandParameters** collection, for example _\[ClientParam:PrimaryKeyId\]_.

## OpenWindow

The **OpenWindow-type** command can contain the following tags:

  • **Url** (string) – Url to page for opening in pop-up window. You can use the same templates as in the Navigate-type command.

  • **Width** (int) – Width in pixels for window(default, 640).

  • **Height** (int) – Height in pixels for window(default, 480).

  • **Left** (int) – Left position for window (show in center by default).

  • **Top** (int) – Top position for window(show in center by default).

  • **Scroll** (True/False) – Allow scroll bar for window or not.

  • **Resize** (True/False) – Allow resize for window or not.

  • **RefreshMethod** (string) – JavaScript function name with one parameter, which will be called after window close.

  • **UpdatePanelIds** (string) – List of UpdatePanels IDs, which necessary to update after window close.

  • **EnableHandler** (string) – Server handler in format "className, assemblyName" which define accessibility of the command.

In WEB, you do not have a standard use-case for monitoring closed pop-up windows, so you need to take additional actions. To update the parent window, run the following code:



The **param** string parameter is sent to the JavaScript function; if you do not need any parameters for the client side, send **String.Empty**.

Use the following code to close the current pop-up windows and refresh parent windows:



For updating **UpdatePanels** in the parent window (which are defined in the XML description), run the following code.

### Update UpdatePanels



or



The **commandId** command name is mapped from **\<Commandid="">** in the XML.

### commandId command name




## OpenFrameModalPopup

The **OpenFrameModalPopup-type** of command can contain these tags:

  • **Url** (string) – URL to page for opening in pop-up window. You can use the same templates as in the Navigate-type command.

  • **Width** (int) – Width in pixels for window (default, 640).

  • **Height** (int) – Height in pixels for window (default, 480).

  • **Left** (int) – Left position for window (displayed in center by default).

  • **Top** (int) – Top position for window (displayed in center by default).

  • **PopupTitle** (string) – Pop-up window title.

  • **Drag** (True/False) – Allow to drag window or not (default False).

  • **UpdatePanelIds** (string) – List of UpdatePanels IDs, which is necessary to update after the window closes.

  • **EnableHandler** (string) – Server handler in format "className, assemblyName", which defines accessibility of the command.

  • **AutoHeightResize** (True/False) – When True, if the pop-up dialog cannot be displayed in the browser, its height is adjusted. 

### OpenFrameModalPopup example



The .ascx-control, which should be displayed in dialog, must implement the **IModalPopupControl** interface:

### Implement the IModalPopupControl interface



To update the parent window and close the **ModalPopup,** run the following code:



If the parent window contains **UpdatePanels**, and you need to run a full update for the window when the **button id="Btn1"** is pressed, run the following code in **Page\_Load** for the .ascx control:



For closingModalPopup:



If you need to run another command from ModalPopup:



### Example: UI for IFrame ModalPopup:

574


The following steps create a dialog box for a _MyPage.aspx_ custom page.

  1. Create an .ascx control implementing the **IModalPopupControl** interface, and name it _MyControl.ascx_.

  2. Create an XML file with the name _MyPage.xml_.

    
  3. Run the following code for MyPage to display the dialog box:

    

4\. After you run the **AddCommand** method, the variable command contains JavaScript code. If you add the **javascript:** prefix, you can use the **NavigateUrl** property for the **HyperLink** control.

## ServerAction

The **ServerAction-type** command can contain the following tags:

  • **ConfirmationText** (string) – Text in the confirmation dialog box. If this parameter is not defined, it does not display text.

  • **Handler** (string) – Server handler for command in format "className, assemblyName".

  • **UpdatePanelIds** (string) – List of UpdatePanels IDs, which are necessary to update after window close.

  • **EnableHandler** (string) – Server handler in format "className, assemblyName" which defines the accessibility of the command.

### Example: ServerAction-type command



The server handler must implement the **ICommand** interface. The following is an example of the server handler, with actions for selected elements in the grid:

### Server handler implementing ICommand interface



The following example shows how to get the **primaryKeyId** for a grid record:

### Example: get primaryKeyId for grid record



## ClientAction

The **ClientAction-type** command can contain the following tags:

  • **ClientScript** – String containing JavaScript, use a template like _{TemplateType:KeyName}_ (see the [Navigate section](🔗) for the description).

  • **EnableHandler** (string) – Server handler in the format "className, assemblyName" defining accessibility of the command.