Quantcast
Channel: DevExpress Support Center (Examples)
Viewing all 7205 articles
Browse latest View live

How to use the Web Report Designer in JavaScript

$
0
0
This example demonstrates how to use the End-User Web Report Designer in JavaScript.

The example consists of two parts: 
1. A server (backend) project in ASP.NET MVC implementation (the ServerSide solution). At the backend, cross-domain requests are enabled (Access-Control-Allow-Origin) and a custom report storage is implemented.

2. A client (frontend) part (the ClientSide folder) that includes styles, scripts and HTML-templates. 
To download all necessary client resources for this example, navigate to the ClienSide folder, open the console and run the following command:
bower install

See also
How to use the Web Document Viewer in JavaScript

How to use the Web Document Viewer in JavaScript

$
0
0
This example demonstrates how to use the HTML5 Document Viewer in JavaScript.

The example consists of two parts: 
1. A server (backend) project in ASP.NET MVC implementation (the ServerSide solution). At the backend, cross-domain requests are enabled (Access-Control-Allow-Origin) and a custom report storage is implemented.

2. A client (frontend) part (the ClientSide folder) that includes styles, scripts and HTML-templates. 
To download all necessary client resources for this example, navigate to the ClienSide folder, open the console and run the following command:
bower install

See also
How to use the Web Report Designer in JavaScript

How to implement a simple PDF viewer in ASP.NET MVC web application by using the Document Server functionality

$
0
0

This example demonstrates how to implement a custom web PDF viewer control by using the DevExpress Document Server functionality.


The main idea of this approach is to use the PdfDocumentProcessor class functionality to load the PDF document and convert its pages to images. Then, these images are rendered in the browser to display PDF document pages.


Important Note:

The Document Server product license is required for using this approach. Please refer to the Subscriptions page for more information.

See also:
How to implement a simple PDF viewer in ASP.NET WebForms web application by using the Document Server functionality

Question Comments

Added By: Harikrishna Manikandan at: 10/4/2017 5:25:48 AM    hi,

this example is not working mvc5 ?
because i have to run mvc 4 it's working fine but same code execute in mvc 5 sowing flowing error.

please check this reference dll file for use pdf viewer. is working fine in mvc4 but not working in mvc5

in bin folder there are three files

DevExpress.Web.Mvc.v17.1.dll
DevExpress.Web.Mvc.v17.1.xml
DevExpress.Web.Mvc5.v17.1.dll

i have already add reference in web.config file.
   
<add assembly="DevExpress.Pdf.v17.1.Core, Version=17.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" /> 

and if i was try to without delete 
1) DevExpress.Web.Mvc.v17.1.dll
2) DevExpress.Web.Mvc.v17.1.xml

so following error are showing 
 D:\DocumentSharing1.0\DAT.DS.Web\Views\Home\_CallbackPanelPartial.cshtml(1): error CS0121: The call is ambiguous between the following methods or properties: 'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress<ModelType>(System.Web.Mvc.HtmlHelper<ModelType>)' and 'DevExpress.Web.Mvc.UI.HtmlHelperExtension.DevExpress<ModelType>(System.Web.Mvc.HtmlHelper<ModelType>)'

and delete both file in bin folder so error will be display 


Could not load file or assembly 'DevExpress.Pdf.v17.1.Core, Version=17.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

ASPxTreeList - How to create an external filter with the ASPxTextBox and highlighting search text

$
0
0

The example demonstrates how to implement an external filter for the ASPxTreeList control and highlight the search text. To accomplish this, use the ASPxTreeList.HtmlDataCellPrepared event to highlight a cell text according to the filter criteria.

See also:
E2408: ASPxGridView - creating external filter with the ASPxTextBox and highlighting search text

Question Comments

Added By: Omesis SA de CV at: 11/7/2013 10:36:47 AM    

is it possible to use this external filter using paging in aspxtreelist?

Added By: Les Brinkworth at: 10/4/2017 6:31:01 AM    Testing this in Edge Browser, "Run Online"  ... Does not work???Added By: Les Brinkworth at: 10/4/2017 6:33:36 AM    Doesn't work in Chrome either....

MVC Dashboard - How to store and edit additional information with the dashboard

$
0
0

This example demonstrates how to store an additional dashboard description along with the dashboard layout. The dashboard description is displayed within the HTML textarea element and it is possible to edit it. This functionality is implemented by creating a custom Save button and a custom Dashboard Storage.

How to: Implement Custom Permission, Role and User Objects

$
0
0

This example illustrates how to create custom security objects, such as permissions, roles and users. We will implement a permission that allows administrators to secure the exporting functionality in an XAF application. The complete description is available in the How to: Implement Custom Permission, Role and User Objects topic.

Question Comments

Added By: Leong Vai Long at: 4/30/2014 3:24:41 AM    

Hi DX,
How can I rename these 7 SecuritySystem* tables in database?
How to change their Oid to Int64 instead of GUID? My other BOs are inheriting from XPObject.
Thanks.

Added By: Konstantin B (DevExpress) at: 4/30/2014 4:08:08 AM    Hi Leong,
You can implement security system classes from scratch and use a key propety of a requred type instead of inheriting built-in classes: How to: Implement a Custom Security System User Based on an Existing Business ClassAdded By: Amin Baig at: 2/28/2016 9:04:22 AM    Hi,

How can this example be used to create a role which can create new users. I know the Administrator can create users, but then Administrator role has complete visibility of everything.

In my scenario, the Administrator role is only for the system owner that is myself, and my system is a cloud based multi-tenant system. So I have to create a role which can create new users, but does not have full control on everything.

Regards. Added By: Konstantin B (DevExpress) at: 2/28/2016 11:29:35 PM    Hi Amin,

In your scenario, you can create a security role and grant it write permissions for a user type.

Added By: Amin Baig at: 2/29/2016 2:21:24 AM    Hi Konstantin,

Can you guide me to an example/demo on how this can be achieved?

Regards. Added By: Konstantin B (DevExpress) at: 2/29/2016 2:30:15 AM    

I am afraid we have no separate example for this scenario, but actually it does not differ from granting permissions for any other business object type. A security system user is a regular business object and there is no need to grant access to it in some special way. In the context of the current example, the security system user type is Employee.

How to automatically assign appropriate editors for interactive customization of a document's content in Print Preview

$
0
0

This example demonstrates how to use a custom EditingFieldTemplateSelector for interactive document editing in Print Preview.

In this example, editors that are used to customize a document's content are automatically assigned according to the corresponding EditingField's value type.

ASPxUploadControl - How to show a custom validation error window

$
0
0
This example demonstrates how to show a custom window popup with information about an error instead of the standard browser alert window when the built-in ASPxUploadControl validation fails.

How to display a non-persistent object's Detail View from the Navigation

$
0
0

This is an obsolete example. This example is applicable to XAF versions prior to 16.1. In 16.1, we significantly simplified the use of non-persistent objects. For details, refer to the  How to: Display a Non-Persistent Object's Detail View from the Navigation help topic.

Question Comments

Added By: DKx at: 7/1/2015 7:27:56 AM    

This code fails with session-based non-persistent classes when Refresh action is called:

"The error occurred:
Type:       SessionMixingException
Message:    The 'Example.Module.MyNonPersistentObject' object belongs to a different session."

void application_CustomProcessShortcut(object sender, CustomProcessShortcutEventArgs e)
{
   if (e.Shortcut.ViewId == "MyNonPersistentObject_DetailView")
   {
       IObjectSpace objectSpace = Application.CreateObjectSpace();
       e.View = Application.CreateDetailView(objectSpace, objectSpace.CreateObject<MyNonPersistentObject>(), true);
       e.Handled = true;
   }
}

How to solve it?

Added By: Dennis (DevExpress Support) at: 7/1/2015 11:26:44 AM    @DKx: It is wrong to inherit non-persistent classes from the base XPO classes like BaseObject, XPObject, etc. Use session-less POCOs instead (like demonstrated in this example).Added By: DKx at: 7/2/2015 12:52:10 AM    

@Denis: Yes, you're right.

A possible solution I found as working is to pass ObjectSpace instead of Session to created non-persistent object. This way I can use session functions inside as usual (FindObject etc.):

abstract public class NonPersistentObject
{
   private IObjectSpace ObjectSpace;

   public NonPersistentObject(IObjectSpace ObjectSpace)
   {
       if (ObjectSpace == null)
           throw new Exception("Unintialized ObjectSpace for non-persistent object passed.");

       this.ObjectSpace = ObjectSpace;
   }
   
   protected Session Session
   {
       get { return ((XPObjectSpace)ObjectSpace).Session; }
   }
}

Added By: Michael (DevExpress Support) at: 7/2/2015 5:19:34 AM    @DKx: Your solution is correct.Added By: Willem de Vries at: 7/2/2015 12:06:17 PM    

When you develop something like this, but need an editable detailview, change AllowEdit to true, and add the following line:
((DetailView)e.View).ViewEditMode = ViewEditMode.Edit;
This will put the detailview immediately in edit mode.
This isn't an issue when using domain components, but when you use nonpersistent classes derived from an XPO object, it comes in handy, because changing from view to edit mode forces a refresh, with an sessionmixing error as a result.

Added By: Willem de Vries at: 7/2/2015 12:08:30 PM    

@Dennis: using nonpersistent objects gives us great power when using OnChanged() etc. And it frees us from studying the DC world.

Added By: Michael (DevExpress Support) at: 7/3/2015 2:42:43 AM    @Willem: Non-persistent classes derived from base XPO classes won't work correctly with built-in controllers. They cannot be refreshed because they are not read from the database. If you need property change notifications, implement the INotifyPropertyChanged interface in the POCO class.

How to provide inplace editors for columns headers?

$
0
0


This example demonstrates how to manually draw an editor in column headers and activate them on mouse click.

Question Comments

Added By: Yuan Kwei Huang at: 6/29/2014 10:24:36 AM    

Sorry, I read your sample code, but still have not idea how to use it.
How do I combine my grid control/view with this sample code?

Added By: Dimitros (DevExpress Support) at: 6/30/2014 12:25:11 AM    

I see that you posted a separate ticket with the same questions: How to provide inplace editors for columns headers?.

 

I'll answer you in that thread.

Added By: Stefan Wohlfarth at: 10/10/2017 8:04:53 AM    There is a slight problem when using an AdvBandedGrid. If you register an editor to a column with rowindex > 0 the method CalcColumnHitInfo might return the wrong column. Not only do you have to check IntInRange for pt.X but also for pt.Y like:

[C#]
if(!ci.Bounds.IsEmpty&&IntInRange(pt.X,ci.Bounds.Left,ci.Bounds.Right)&&IntInRange(pt.Y,ci.Bounds.Top,ci.Bounds.Bottom)){......


DXGrid - How to Implement Custom Sorting

$
0
0

This example demonstrates how to implement custom sorting. To do this, handle the GridControl.CustomColumnSort event, assign a custom sorted list to the e.Result property and set the e.Handled property to True.

Question Comments

Added By: Jonx at: 5/28/2012 6:10:45 PM    

Am I wrong or your are comparing the indexes of the values instead of the values?

Added By: Mark Servidio at: 4/8/2013 2:05:27 PM    

Yes, that's correct. I think it's just for purpose of this example though. You can easily grab the row data object using the GridControl.GetRowByListIndex(e.ListSourceRowIndex1) method and use row values to do the comparison.

ASPxRichEdit - How to insert text to the end of the document on the client side

$
0
0
The ASPxRichEdit control is shipped with the client API allowing you to manipulate with document content on the client side. The client API includes document APIselection API and client commands:

- The document API provides resources for receiving the current information about document structural elements.
- The selection API provides resources for positioning the cursor and select elements within a document.
- The client commands provide resources to modify the document content.

This example demonstrates how to insert text to the end of the document on the client side. The ASPxRichEdit includes a custom ribbon button: clicks on this item are processed using the CustomCommandExecuted client event. The event handler identifies the custom item via a command name and includes client commands and the selection API to insert text.

ASPxRichEdit - How to get a selected text on the client side

$
0
0
This example demonstrates how to get selected text on the client side. The ASPxRichEdit client-side API provides the selection property that allows you to select a text range in code or obtain the selected range's Interval object. This object can be used to receive the selected text: all text is stored within sub-documents, following the ASPxRichEdit document model structure. Thus, get an active sub-document using the client-side document property and use the text array to access the selected text range. If you need to receive all text in the active sub-document, you can get the entire text array.

ASPxRichEdit - How to open SpellChecker dialog via Ribbon

$
0
0

ASPxRichEdit provides built-in spell checking support, including the type-as-you-go error detection. End-users can correct a misspelled word in the Spelling dialog. It can be opened using the corresponding context menu's item when a cursor is over the misspelled word. This dialog allows a user to select spelling suggestions (they are also displayed in the context menu), change or ignore the error once or in all cases, and add a new word to the dictionary. You can also invoke the Spelling dialog using the client-side openSpellingDialog command. 

In this example, ASPxRichEdit includes a custom ribbon button: clicks on this item are processed using the client-side CustomCommandExecuted event. The event handler identifies the custom item via a command name and executes the openSpellingDialog command.

ASPxRichEdit - How to upload a document in the working directory using drag-and-drop

$
0
0
In some scenarios, it is necessary to load a document stored on a user's hard disk to the ASPxRichEdit control. The ASPxRichEdit does not support this feature, but you can use a workaround described in this example. Note, that in this example the open document is saved to the Working Directory. If you need to open the document without saving to the Working Directory see this example.

The ASPxUploadControl is developed to save client files to the server via a browser. This control includes the Advanced mode that allows users to load documents using drag-and-drop. The ASPxUploadControl's ExternalDropZoneID property defines which HTML element is used to release files dragged from the client's hardware. Using this property, you can invoke document loading by dragging it to the ASPxRichEdit control. When the ASPxUploadControl finishes loading the document, it is saved to the ASPxRichEdit's WorkingDirectory and opened using the client-side command.

ASPxRichEdit - How to open a document using drag-and-drop

$
0
0
In some scenarios, it is necessary to load a document stored on a user's hard disk to the ASPxRichEdit control. The ASPxRichEdit does not support this feature, but you can use a workaround described in this example. Note, that in this example the open document is not saved to the Working Directory. If you need to save the open document to the Working Directory see this example.

The ASPxUploadControl is developed to save client files to the server via a browser. This control includes the Advanced mode that allows users to load documents using drag-and-drop. The ASPxUploadControl's ExternalDropZoneID property defines which HTML element is used to release files dragged from the client's hardware. Using this property, you can invoke document loading by dragging it to the ASPxRichEdit control. When the ASPxUploadControl finishes loading the document, it is saved as a stream via the RichEditDocumentServer and opened in the ASPxRichEdit control.

Data Source Wizard – How to replace the standard Query Builder

$
0
0

This example illustrates how to customize the standard Query Builder dialog of a Data Source Wizard.

The following image illustrates a custom form replacing the standard Query Builder.



The standard Query Builder dialog is initialized and displayed by the Create a Query or Select a Stored Procedure wizard page.

To substitute the Query Builder, do the following.

1. Override the RunQueryBuilder virtual method of this page's presenter (MultiQueryConfigurePage<TModel>).

In this method's body, implement the logic required to display a custom Query Builder form and obtain the results of the Query Builder execution.

2. To register a custom query configuration form, implement the IWizardCustomizationService interface.

To invoke the custom query customization form instead of the default Query Builder, implement the ISqlEditorsCustomizationService interface.


3. Add the custom services to the Report Designer by calling the XRDesignMdiController.AddService method at the application startup.

 

See also:

For a general code example of how to customize the Data Source Wizard using the IWizardCustomizationService interface, see How to customize the New Report Wizard (introduced in the 2014 vol.1 release) in the End-User Designer.

How to: Use Google, Facebook and Microsoft accounts in ASP.NET XAF applications (OAuth2 authentication demo)

$
0
0
This example demonstrates the use of OAuth2 authentication in a web application. Users can sign in to the application via Google, Facebook or  Microsoft authentication providers.


You can try this demo "as is" to overview its capabilities, and then try the demonstrated functionality in your own XAF applications according to the instructions below.


How to Run this Demo

Before running this demo, register developer accounts at the services you are going to use:
https://console.developers.google.com/
https://developers.facebook.com/
https://apps.dev.microsoft.com/ 

Open the Web.config file and specify your own client IDs and client secrets for each provider.

[XML]
<appSettings><addkey="GoogleClientID"value="YourGoogleClientID"/><addkey="GoogleClientSecret"value="YourGoogleClientSecret"/><addkey="FacebookClientID"value="YourFacebookClientID"/><addkey="FacebookClientSecret"value="YourFacebookClientSecret"/><addkey="MicrosoftClientID"value="YourMicrosoftClientID"/><addkey="MicrosoftClientSecret"value="YourMicrosoftClientSecret"/>

You can remove keys corresponding to providers that you do not want to use. 


Now you can run the application.


Overview of this Demo Capabilities


In the logon window, there are buttons for each provider specified in Web.config:


Standard XAF authentication with built-in username/password is also supported. When you log in via OAuth authentication, the email is used as a user name. By default, a user object is autocreated for each logon. You can disable autocreation, or specify the auto-assigned role for new users in the InitializeComponent method (see WebApplication.cs(vb)):
[C#]
this.securityStrategyComplex1.NewUserRoleName="Default";((AuthenticationStandartWithOAuth)authenticationBase).CreateUserAutomatically=true;
[VB.NET]
Me.securityStrategyComplex1.NewUserRoleName = "Default"CType(authenticationBase, AuthenticationStandartWithOAuth).CreateUserAutomatically = True
When CreateUserAutomatically is false, the logon is allowed if a user with the email returned by the external service exists in the application database. To grant access to a user with a specific e-mail, use the built-in Admin account, create a user object and set the UserName to this e-mail.



If you set the EnableStandardAuthentication property to true for an auto-created user, this user will be able to login directly, with a user name and password. Note that the password is empty by default, so do not forget to specify it when enabling standard authentication.



Each user can have several associated email addresses. To add or remove email addresses, use the  OAuth Authorization Emails list in the user's Detail View.



How to Implement the Demonstrated Functionality in your XAF Application
 

1. In your solution, open Package Manager Console.
  1.1. Choose the YourSolutionName.Web project in the Default project combo box, and execute the following commands to add Owin packages:
  Install-Package Microsoft.Owin -Version 3.1.0
  Install-Package Microsoft.Owin.Security -Version 3.1.0
  Install-Package Microsoft.Owin.Security.Cookies -Version 3.1.0
  Install-Package Microsoft.Owin.Host.SystemWeb -Version 3.1.0
  Install-Package Microsoft.Owin.Security.Google -Version 3.1.0
  Install-Package Microsoft.Owin.Security.Facebook -Version 3.1.0
  Install-Package Microsoft.Owin.Security.MicrosoftAccount -Version 3.1.0
  1.2. Switch to the YourSolutionName.Module.Web project and install these two packages:
  Install-Package Microsoft.Owin -Version 3.1.0
  Install-Package Microsoft.Owin.Host.SystemWeb -Version 3.1.0

2. Open the Web.config file and specify your own client IDs and client secrets for each provider you are going to use. Refer to the AuthenticationOwin.Web\Web.config file in the demo solution to see the example. Then, set the authentication mode to "None" and comment or remove settings related to the default XAF authentication:
[XML]
<authenticationmode="None"/><!--<forms name="Login" loginUrl="Login.aspx" path="/" timeout="10" />--></authentication><!--<authorization><deny users="?" /><allow users="*" /></authorization>-->

3. Copy the following files from the demo solution to the corresponding locations within your solution:
- AuthenticationOwin.Module\AuthenticationStandartWithOAuth.cs(vb)
- AuthenticationOwin.Module\IAuthenticationOAuthUser.cs(vb)
- AuthenticationOwin.Module.Web\Controllers\LogonAuthController.cs(vb)
- AuthenticationOwin.Module.Web\Security\CustomSecurityStrategyComplex.cs(vb)
- AuthenticationOwin.Module.Web\Controllers\LogonAuthController.cs(vb)
- AuthenticationOwin.Module.Web\Images\Facebook.svg
- AuthenticationOwin.Module.Web\Images\Google.svg
- AuthenticationOwin.Module.Web\Images\Microsoft.png

- AuthenticationOwin.Web\Startup.cs(vb)
AuthenticationOwin.Web\LogonTemplateContent1.ascx
AuthenticationOwin.Web\LogonTemplateContent1.ascx.cs(vb)
AuthenticationOwin.Web\LogonTemplateContent1.ascx.designer.cs(vb)
Include the copied files to your solution (Add | Existing Item...). Update the namespace names in the copied code files to match namespaces you use in your solution. For image files, set the Build Action property to Embedded Resource.

4. Edit the YourSolutionName.Module\Module.cs file. In the overridden Setup method, handle the XafApplication.CreateCustomLogonWindowControllers event and add the LogonAuthController to the e.Controllers collection passed to this event. Refer to the AuthenticationOwin.Module.Web\Module.cs(vb) file to see an example.

5. Edit the YourSolutionName.Web\WebApplication.cs(vb) code and register this custom security strategy:
[C#]
this.securityStrategyComplex1=newAuthenticationOwin.Module.Web.Security.CustomSecurityStrategyComplex();
[VB.NET]
Me.securityStrategyComplex1 = New AuthenticationOwin.Module.Web.Security.CustomSecurityStrategyComplex()

6. Implement the IAuthenticationOAuthUser interface in your custom user class. You can see an example in the AuthenticationOwin.Module\BusinessObjects\OAuthUser.cs file. If you use the built-in user, you can copy the OAuthUser class to your project from the demo and set the SecurityStrategy.UserType property to OAuthUser in the Application Designer.

7. Change the code that creates your predefined users in YourSolutionName.Module\DatabaseUpdate\Updater.cs. Set EnableStandardAuthentication to true for users who can login with standard authentication (username and password). See the example in the AuthenticationOwin.Module\DatabaseUpdate\Updater.cs file.

8. Register the LogonTemplateContent1.ascx template in the YourSolutionName.Web\Global.asax.cs file:
[C#]
WebApplication.Instance.Settings.LogonTemplateContentPath="LogonTemplateContent1.ascx";
[VB.NET]
WebApplication.Instance.Settings.LogonTemplateContentPath = "LogonTemplateContent1.ascx"

9. Copy the LoginWith* actions customizations and the AuthenticationStandardLogonParameters_DetailView layout settings from the AuthenticationOwin.Module.Web\Model.xafml file to the same file in the YourSolutionName.Web project. If you have no model customizations in Model.xafml, you can just overwrite it with the file from demo. Ensure that the IsPostBackRequired property of each LoginWith* action is set to true.


Tip: You can refer to the OWIN OAuth 2.0 Authorization Server documentation to learn how to add more authentication providers.

Question Comments

Added By: Scott Gross at: 7/14/2017 8:43:09 AM    Will this work with XAF Mobile as well?Added By: Konstantin B (DevExpress) at: 7/16/2017 11:07:04 PM    We haven't yet tested this approach with XAF Mobile. However, we will consider including the mobile app project to this demo. I've created a separate ticket on your behalf (T536304: OAuth2 authentication in XAF Mobile). It has been placed in our processing queue and will be answered shortly.Added By: Rik Pronk at: 8/1/2017 6:41:49 AM    In the sample project, I noticed some errors in the web.config file. Below 'For applications with a security system' the <Authentication> tag is used, but that's supposed to be the <authorization> tag instead.Added By: Konstantin B (DevExpress) at: 8/1/2017 8:49:03 AM    Hello Rik,

Your comment is correct, we have updated this demo. Thanks!  Added By: Martin Svärd at: 8/31/2017 3:40:34 AM    Hi Konstantin,

I am not able to try this example, even though I register it with Microsoft.
Am I missing something?
And will this work with Microsoft Azure as well, or is it only Microsofts non O365 accounts? Added By: Dennis (DevExpress Support) at: 8/31/2017 3:55:20 AM    @Martin: Thanks for your interest. I've created a separate ticket on your behalf (T550911: Difficulties when running the T535280 example (OAuth2 authentication)). It has been placed in our processing queue and will be answered shortly.

Report Designer for WPF - How to enable end-users to execute custom SQL

$
0
0
By default, the SQL Data Source wizard only allows the visual construction of SQL queries using the built-in Query Builder. Queries constructed using the Query Builder can only contain a SELECT statement and are guaranteed to be safe.

Manual editing of SQL queries is considered unsafe and is disabled by default. You can enable SQL editing at your own risk using the approach described in this example.

If custom SQL editing is enabled, the Query Builder contains the Allow Edit SQL check box, which also enables the capability to specify the custom SQL query manually.



IMPORTANT NOTE:
Custom SQL queries are not validated before their execution and may contain potentially harmful instructions. For this reason, we strongly recommend that you implement your own validation logic that permits only execution of specific query kinds. See Report Designer for WPF - How to provide custom SQL validation for a code sample.

How to implement an embedded Chart Control

$
0
0
Starting from version 17.2, the Chart Control can be directly embedded in a container control's cells using a RepositoryItemAnyControl object.

To embed a chart into a container control in previous versions, you need to manually create a custom chart control that implements the IAnyControlEdit interface. See the example below for more details.

See also:
RepositoryItemAnyControl Class
Viewing all 7205 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>