All docs
V20.2
20.2
20.1
The page you are viewing does not exist in version 20.1. This link will take you to the root page.
19.2
The page you are viewing does not exist in version 19.2. This link will take you to the root page.
19.1
The page you are viewing does not exist in version 19.1. This link will take you to the root page.
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.

Restrict Edit Operations

  • 4 minutes to read

The Diagram extension allows you to restrict edit operations in the following ways.

Prohibit All Operations of a Specific Type

To prohibit an operation, set the corresponding SettingsEditing.Allow{Operation} property to false.

@Html.DevExpress().Diagram(settings => {
    settings.Name = "Diagram";
    settings.SettingsEditing.AllowAddShape = false;
    settings.SettingsEditing.AllowChangeConnection = false;
    settings.SettingsEditing.AllowChangeConnectorPoints = false;
    settings.SettingsEditing.AllowChangeConnectorText = false;
    settings.SettingsEditing.AllowChangeShapeText = false;
    settings.SettingsEditing.AllowDeleteConnector = false;
    settings.SettingsEditing.AllowDeleteShape = false;
    settings.SettingsEditing.AllowMoveShape = false;
    settings.SettingsEditing.AllowResizeShape = false;
    ...

Prohibit Individual Operations

Every time a user attempts an edit operation, the extension raises the RequestEditOperation event. Use the allowed parameter to either permit or cancel the user action. To identify the operation type and target element, use the event parameters listed below.

Example

function onRequestEditOperation(s, e) {
    if(e.operation === DiagramEditOperation.AddShape) {
        if(e.args.shape.type !== "employee" && e.args.shape.type !== "team") {
            !e.updateUI && showWarning("You can add only a 'Team' or 'Employee' shape.");
            e.allowed = false;
        }
    }
    else if(e.operation === DiagramEditOperation.ResizeShape) {
        if(e.args.newSize.width < 1 || e.args.newSize.height < 0.75) {
            !e.updateUI && showWarning("The shape size is too small.");
            e.allowed = false;
        }
    }
    else if(e.operation === DiagramEditOperation.BeforeChangeShapeText) {
        if(e.args.shape.type === "root") {
            !e.updateUI && showWarning("You cannot change the 'Development' shape's text.");
            e.allowed = false;
        }
    }
    else if(e.operation === DiagramEditOperation.ChangeShapeText) {
        if(e.args.text === "") {
            !e.updateUI && showWarning("A shape's text cannot be empty.");
            e.allowed = false;
        }
    }
    ...
}
@Html.DevExpress().Diagram(settings => {
    settings.Name = "Diagram";
    settings.ClientSideEvents.RequestEditOperation = "onRequestEditOperation";
    ...

Run Demo: Editing Restrictions

Read Only Mode

Set the ReadOnly property to true to protect the Diagram extension from edit operations. In this mode, the control hides its UI elements: the toolbox, history toolbar, and properties panel.

@Html.DevExpress().Diagram(settings => {
    settings.Name = "Diagram";
    settings.ReadOnly = true;
}).Import(Model).GetHtml()

Run Demo: Read Only