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

How to calculate multiple Custom Totals with SummaryType set to Custom

$
0
0

The following example demonstrates how to calculate and display multiple Custom Totals for a field.


In this example, two Custom Totals are implemented for the Category Name field. The first one displays a median calculated against summary values, while the second one displays the first and third quartiles.


To accomplish this task, we create two PivotGridCustomTotal objects and set their summary type to PivotSummaryType.Custom. We also assign the Custom Totals' names to PivotGridCustomTotalBase.Tag properties to be able to distinguish between the Custom Totals when we calculate their values. Finally, we add the created objects to the Category Name field's PivotGridField.CustomTotals collection and enable the Custom Totals to be displayed for this field by setting the PivotGridFieldBase.TotalsVisibility property to PivotTotalsVisibility.CustomTotals.


Custom Total values are actually calculated in the PivotGridControl.CustomCellValue event. First, the event handler prepares a list of summary values against which a Custom Total will be calculated. For this purpose, it creates a summary datasource and copies the summary values to an array. After that, the array is sorted and passed to an appropriate method that calculates a median or quartile value against the provided array. Finally, the resulting value is assigned to the event parameter's PivotCellValueEventArgs.Value property.

Question Comments

Added By: Daniel Lipkie at: 7/3/2012 10:04:45 AM    

I tried to run the example, VS 2010, DevEx 2012.1 ... the form displays but has no data.

Added By: pepitolanda1 at: 6/25/2013 3:13:24 PM    

This also happend to me.
 VS 2010, DevEx 2013.1 ... the form displays but has no data.

Added By: Andrew Aks (DevExpress) at: 6/27/2013 5:54:55 AM    

Please change the target platform in project settings to x86. The project uses an MS Access database, so, if a 64-bit driver for the Microsoft Access Database Engine is not installed, you will get InvalidOperationException.

Added By: Cindy Oakes at: 1/28/2014 6:30:33 AM    

Is there a project that does not use the runner. I can not install the runner on this pc because I dont' have admin rights.

plus I extracted the data from the northwind database and created me temptables to use and I am not getting data. I really need to look at the properties of the pivot grid on the form that is designed.

Added By: Constant (DevExpress Support) at: 1/28/2014 11:06:42 PM    

I am afraid I cannot provide you with a solution by using only the example comments interface. I suggest you create a new question in the Support Center and describe the issue there. We will be glad to assist you.

Added By: Vipul Kandivalikar at: 7/16/2014 1:26:34 PM    

So I ran the example but I noticed that it doesnt display custom totals when  I remove 'Product Name' from the grouping. How do I get 2 or 3 different custom total values to be displayed when I want to compute them for a single column?

Added By: John (DevExpress Support) at: 7/16/2014 11:44:34 PM    To achieve this goal, enable the PivotGrid.OptionsView.ShowCustomTotalsForSingleValues option.

How to copy custom fields added to a custom Event class when dragging appointments in the Scheduler with the Control key pressed

$
0
0

If you extended the default DevExpress.Persistent.BaseImpl.Event class or implemented your own class, supporting the DevExpress.Persistent.Base.IEvent interface, then you may face the situation when custom fields added to your class won't be copied when copying appointments in the scheduler control. To make it possible, you should manually map your custom data fields to appropriate appointment fields. The How to: Create a Custom Field for an Appointment help topic provides more information on how to do this.
In this example, we have a descendant of the Event class that has two properties with the RuleRequiredFieldAttribute. After adding custom field mappings to the controllers, if we drag and drop an existing appointment in the scheduler control with the Control key pressed, we won't receive a validation exception because custom fields will be correctly copied.
However, adding custom field mappings won't help if we have collection properties, for example, an associated details collection. In this situation, you should handle copying of appointments yourself. The scheduler control provides corresponding API for this. For example, check the SchedulerControl.AllowAppointmentCopy Event help topic for more information.

See Also:
Scheduler Module Overview
How to create fully custom Role, User, Event, Resource classes for use with the Security and Scheduler modules
Scheduler - Provide a way to copy a collection of custom fields when an appointment is being copied

Question Comments

Added By: Lleonard del Río at: 7/16/2014 12:35:02 PM    

I had this code in my solution in v2013 and after upgrading to v2014 it stopped working. I have tried to remove the ! after the reference fields mapping and it seems to work correctly now. Should this code be updated for v2014? Thanks in advance.

Added By: Dennis (DevExpress Support) at: 7/17/2014 12:28:27 AM    @Lleonard: Thank you for your feedback. We need some additional time to research this behavior. Please bear with us.

How to dynamically generate WebChartControl from Linq query

$
0
0

This sample illustrates how to populate a WebChartControl by data from the Linq query and bind individual series to the result of this query.

Question Comments

Added By: Etra I mas D at: 7/17/2014 1:29:27 AM    

Error de servidor en la aplicación '/WebSite'.

La fuente de datos no contiene un miembro con el nombre "Product".
 Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.ArgumentException: La fuente de datos no contiene un miembro con el nombre "Product".

Error de código fuente:

Línea 39:
Línea 40:             series.DataSource = productsQuery;
Línea 41:             series.ArgumentDataMember = "Product";
Línea 42:             series.ValueDataMembers.AddRange(new string[] { "Price" });
Línea 43:
 

Archivo de origen:  c:\Users\sbelinchon\Documents\Samples\XtraCharts Suite\11.2.14\E1114\ChartRadarLinqWeb\WebSite\Default.aspx.cs    Línea:  41

Seguimiento de la pila:

[ArgumentException: La fuente de datos no contiene un miembro con el nombre "Product".]
  DevExpress.XtraCharts.SeriesBase.CheckArgumentDataMember(Object dataSource, String dataMember, ScaleType argumentScaleType) +197
  DevExpress.XtraCharts.SeriesBase.set_ArgumentDataMember(String value) +88
  _Default.Page_Load(Object sender, EventArgs e) in c:\Users\sbelinchon\Documents\Samples\XtraCharts Suite\11.2.14\E1114\ChartRadarLinqWeb\WebSite\Default.aspx.cs:41
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +50
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

 

Información de versión: Versión de Microsoft .NET Framework:2.0.50727.5477; Versión ASP.NET:2.0.50727.5483

How to: Add a Button to a Form using a custom ViewItem

How to determine the PDF content type corresponding to a specific document point

How to change XLSX data format settings when exporting the Grid to XLSX format

$
0
0

By default, when exporting data from a grid to the XLSX format, the data is formatted to one of available formats in XLSX. If in Excel two Decimal Places are used for numeric data by default, numeric values with a floating point will be shown with two decimal places regardless of a format set for a corresponding grid column or repository item.

There are two solutions to overcome this shortcoming:


1. You can export values as text. In this case, your formatting will be preserved. For this, assign RepositoryItemTextEdit to a column by setting the GridColumn.ColumnEdit property and set the RepositoryItemTextEdit.ExportMode property to DisplayText. In this case, you can export data as text for specific columns. In addition, you can determine the Export Mode for all data in the grid. For this, pass an XlsxExportOptions object with the XlsxExportOptions.TextExportMode property set to Text to the GridView.ExportToXlsx method. This approach has one disadvantage, though. Since values are exported as text, you will not be able to execute any calculations with them in Excel.

2. You can export data as values and change XLSX data format settings. To do it, create a custom RepositoryItemTextEdit as shown in the Custom Editors help article, and override the GetBrick method. In this method, you can set the TextBrick.XlsxFormatString property to a required value. In this case, you will be able to execute any calculations with exported data in Excel.

This example illustrates how to implement the second approach. In this project we have added the XlsxFormatString property to a custom RepositoryItemTextEdit.

Question Comments

Added By: CaryO at: 2/10/2014 2:31:05 PM    

I'm trying to use solution 2. In my case I want to export custom currency format (c2) displayed int he xtragrid for the currency column (say 'InvoiceAmount'). For instance, if the currency column is displayed in british pounds, I want the same to be exported to .xlsx as well. Currently, irrespective of the currency symbol displayed in the grid column it always get exported to default excel currency format. how do I achieve this.

Added By: Svetlana (DevExpress Support) at: 2/11/2014 12:01:47 AM    

Hi,

In order not to mix multiple questions within one thread, I have extracted your inquiry to a separate https://www.devexpress.com/Support/Center/Question/Details/Q466561 ticket. Please refer to it.

Added By: Raval at: 7/17/2014 6:25:55 AM    

Thanks.  Solution 1 worked for me.

How to select all detail rows when selecting a master row (CheckBoxRowSelection mode)

How to change the names of auto-created series

$
0
0

This example details how to change the names for series created automatically, based on the specified series template.

To accomplish this, handle the ChartControl.CustomDrawSeries (or, WebChartControl.CustomDrawSeries) event in the following way.

Question Comments

Added By: GHM Jansen at: 7/18/2014 12:52:44 AM    

Hello,

I dont't think this example does what the header says. Is this example incomplete or am I missing something?
What I'm looking for is a way to change the name of the autocreated series and to display this name in the pointlabel. The customize-series is working well but not the autocreated series. It keeps displaying the auto-created name.
Thanks in advance,

Geert.

Added By: John (DevExpress Support) at: 7/18/2014 1:56:10 AM    

The cause of this behavior is that the ChartControl.CustomDrawSeries event does not change series names in point labels and Crosshair popup. To achieve this goal, handle the ChartControl.CustomDrawSeriesPoint  and ChartControl.CustomDrawCrosshair events to provide your custom text for these elements.


How to create a GridView descendant that will allow displaying an image against text in cells based upon their values

$
0
0

This example shows how to create a GridView descendant that will allow displaying an image against text in cells and provide images based on the GridView data.

The resulting descendant has an additional OnSmartIconSelection event that can be used to specify the index of an image that should be displayed in each cell. The event handler receives an argument of the OnSmartIconSelectionEventArgs type for providing data related to this event:
OnSmartIconSelectionEventArgs.ImageList - gets an image source.
OnSmartIconSelectionEventArgs.ImageIndex - gets or sets the index of the image that should be displayed.
OnSmartIconSelectionEventArgs.CellInfo - gets a GridCelInfo object that represent information about current GridCell.
OnSmartIconSelectionEventArgs.IsActiveEditor - gets True value if the current GridCell is active.
You should assign the index of an image that you want to display to the OnSmartIconSelectionEventArgs.ImageIndex property.

See Also:
How to force a GridView to display images against text in specified cells or columns
How to force a TextEdit to display an image against the text

Question Comments

Added By: Tristan Hegarty at: 7/18/2014 1:39:11 AM    

Hi, is there supposed to be an example for creating a GridView descendant? I tried clicking the 'Example' link on the right-hand side but this doesn't work for me. Thanks.

Added By: Jannet (DevExpress Support) at: 7/18/2014 4:04:03 AM    Hello Tristan,
If you are looking for an example that shows how to create a GridView descendant, please review the following threads:
How to create a GridView descendant class and register it for design-time use - KB article
How to create a GridView descendant class and register it for design-time use  - Example.

As for this sample, I've fixed it. Please try to download the example and let me know your results.

How to initialize an aggregated referenced property via an Action.

How to implement cascading ASPxComboBox controls for each ASPxGridView row

$
0
0

This example illustrates how to implement cascading ASPxComboBox (A general technique of using cascading ASPxComboBoxes) controls for each ASPxGridView row (i.e., within the DataItemTemplate column).

Question Comments

Added By: Himanshu Agarwal 2 at: 7/18/2014 5:00:19 AM    

Can you please explain the flow and functionality of this ?

OBSOLETE - How to setup a connection to the database from a Module project instead of an executable application project

$
0
0

=====================================
This example is now obsolete. Instead, refer to the How to connect different ORM data models to several databases within a single application one.
=====================================
Usually, the connection to the database is set up in the executable application project. Usually, it is performed in the configuration file or directly in the code of the application's designer or within the Main function/Global application class. To learn more, please check out this help topic: Connect an XAF Application to a Database Provider
In this example, you will learn how to establish a connection to the database directly from your Module project. To do this, you will have to override the Setup method of your Module class and handle the CreateCustomObjectSpaceProvider event of the XafApplication class.

See Also:

How to use a custom ObjectSpaceProvider in XAF

How to save a layout of LayoutControl together with its child controls

$
0
0

By default, if you save a layout of LayoutControl, settings of layout items are saved (Save and Restore Layout ). When you load the saved layout, layout items will be created with saved settings only if LayoutControl contains child controls, whose names exist in the saved layout. Otherwise, layout items will not be created. 


This example illustrates how to save settings of the child controls, too. For this, we have created two extension methods: SaveLayoutExToXml and RestoreLayoutExFromXml. These methods allow you to save and load child controls' settings. It makes sense to use these methods if it is necessary to re-create child controls from the saved layout with the saved settings. If a child control with the same name exists in LayoutControl, it will be removed and replaced by a new one retrieved from the saved layout. This approach is based on using a custom XmlXtraSerializer class. 

How to create a custom GridControl that represents columns horizontally in a way similar to the WinForms VerticalGrid control

$
0
0

This example demonstrates how to create a GridControl descendant with horizontally oriented columns.

To use it, simply add the VerticalGridControl.xaml and VerticalGridControl.xaml.cs files in your project.

In addition, this example demonstrates how to customize grid cells using data templates.

Question Comments

Added By: Prashant Patel 7 at: 5/8/2013 11:44:19 PM    

How can we View Stackpanel as fullscreen mode in wpf window ?

Added By: AKN at: 12/12/2013 12:01:51 PM    

Hi, is there any way of showing TotalSummary in this control?

Added By: Chris Schiefer at: 7/18/2014 7:44:04 AM    

When I updated to v2014 vol 1.5, the event for CustomUnboundColumnData is never fired and the cells never present any data.  It looks like the grid is displaying the correct number of rows and columns, but the data isn't populated.

Added By: Michael Ch (DevExpress Support) at: 7/18/2014 11:41:47 AM    

Hello,

To process your recent post more efficiently, we copied it to a separate ticket created on your behalf: T131266: The E4630 example doesn't work correctly after updating to v2014 vol 1.5.
This ticket is currently in our processing queue. We will post to it as soon as we have any updates.

How to customize the underlying database provider options and data access behavior in XAF

$
0
0

IMPORTANT NOTE

This article describes some advanced customization techniques and low-level entities of the framework with regard to data access, which may be required in complex scenarios only.
So, if you just want to change the connection string, e.g. to use the Oracle instead of the Microsoft SQL Server database, then you would better refer to the Connect an XAF Application to a Database Provider article and documentation on your database provider instead. The XAF integration of supported ORM libraries is also described in the Business Model Design section of the framework's documentation.


Introducing IObjectSpaceProvider and IObjectSpace
XAF accesses data from a data store through special abstractions called - IObjectSpaceProvider and IObjectSpace.
The IObjectSpace is an abstraction above the ORM-specific database context (e.g., the DBContext used in Entity Framework or the Session in XPO) allowing you to query or modify data.
The IObjectSpaceProvider is a provider/creator of IObjectSpace entities, which also manages which business types these IObjectSpace are supposed to work with, how to set up the underlying connection to the database, create and update it and other low level data access options.



An XafApplication can use one or several IObjectSpaceProvider objects at the same time, and you can access this information through the XafApplication.ObjectSpaceProvder or XafApplication.ObjectSpaceProviders properties. Check out these help links to learn more on how to plug in custom IObjectSpaceProvider objects a well.

There are several built-in implementations of the IObjectSpaceProvider and IObjectSpace interfaces in our framework, which are usually specific to a target ORM (Entity Framework or XPO). I suggest you check out the source code of the default framework classes to better understand the role of the IObjectSpaceProvider:

...\DevExpress.ExpressApp.Xpo\XPObjectSpaceProvider.cs
...\DevExpress.ExpressApp.EF\EFObjectSpaceProvider.cs 

Typical customization considerations
You may want to provide a fully custom IObjectSpaceProvider implementation or inherit from the built-in implementors when you want to customize how data access is performed for a chosen ORM.
Below is a list of typical scenarios where a custom IObjectSpaceProvider may be required:

1. How to use XPO caching in XAF 
2. How to prevent altering the legacy database schema when creating an XAF application 
3. How to connect to remote data store and configure WCF end point programmatically 
4. How do I change the default schema in the database
5. How to use a custom ObjectSpace throughout the application by handling the CreateCustomObjectSpaceProvider event? 

In most cases, it is not required to implement the IObjectSpaceProvider interface from scratch since you can inherit from existing implementors or customize/just their parts.

XPO-specific customizations through IXpoDataStoreProvider
For instance, in XPO one of such replaceable parts is the IXpoDataStoreProvider interface, which enables you to provide a custom or configured IDataStore object, which is used for underlying data access with this ORM:

[C#]
publicinterfaceIXpoDataStoreProvider{IDataStoreCreateWorkingStore(outIDisposable[]disposableObjects);IDataStoreCreateUpdatingStore(outIDisposable[]disposableObjects);stringConnectionString{get;}}

 

In its turn, XAF provides several ready to use implementations of this interface for most popular scenarios: 

1. ConnectionDataStoreProvider - can provide IDataStore by the IDbConnection object;

2. ConnectionStringDataStoreProvider - can provide IDataStore by just connecting string information;

3. MemoryDataStoreProvider - DataSet based in-memory IDataStore providers.


Technically, such an IXpoDataStoreProvider part is passed into the XPObjectSpaceProvider constructor as a parameter, which means that you can just customize it instead of re-implementing the whole XPObjectSpaceProvider logic.

Refer to the ...\DevExpress.ExpressApp.Xpo\XPObjectSpaceProvider.cs file within the XAF source code to better understand the role of this part.
To learn more on customizing data access settings for XPO, please refer to the corresponding product documentation: Data Access Layer.


How to use manual numeric scale options of an Axis

$
0
0

This example demonstrates how to use manual numeric scale options of an X-axis.

When the AxisX2D.NumericScaleOptions  property is set to ManualNumericScaleOptions  you can manually define the ManualNumericScaleOptions.GridAlignment, ManualNumericScaleOptions.MeasureUnit, and ManualNumericScaleOptions.AggregateFunction  properties.

To use the automatic numeric scale options, set the AxisX2D.NumericScaleOptions property to AutomaticNumericScaleOptions  and choose the appropriate AutomaticNumericScaleOptions.AggregateFunction.

To prevent the axis scale from being divided into intervals (and thus prevent chart data from being aggregated), set the ManualNumericScaleOptions.AggregateFunction  or AutomaticNumericScaleOptions.AggregateFunction  property to None.

How to create a GridView descendant class and register it for design-time use

$
0
0

This is an example of a custom GridView and a custom control that inherits the DevExpress.XtraGrid.GridControl. Make sure to build the project prior to opening Form1 in the designer. Please refer to the How to create a GridView descendant class and register it for design-time use Knowledge Base article for the additional information.
In addition, you can refer to the examples describing how to create GridControl's View descendants:
1. How to create a WinExplorerView descendant class and register it for design-time use
2. How to create a LayoutView descendant class and register it for design-time use
3. How to create a CardView descendant class and register it for design-time use
4. How to create a AdvBandedGridView descendant class and register it for design-time use ;
5. How to create a BandedGridView descendant class and register it for design-time use. 

How to implement editing in the Preview Form

$
0
0

The following example demonstrates how to edit a report's content in its Print Preview. To accomplish this task, handle the PreviewDoubleClick event of required controls, store their position and status, and then set a new value for these controls and recreate a report's document.

Question Comments

Added By: Kishor Kadam 1 at: 7/21/2014 1:35:56 AM    

Hi,
Instead of Report could you please show the code to display the custom Contextmenu for the PivotGrid Control .

Added By: Andrew L (DevExpress Support) at: 7/21/2014 7:38:47 AM    

Hello Kishor,

To process your recent post more efficiently, I created a separate ticket on your behalf: T131798: How to display the custom Contextmenu for the PivotGrid Control.. This ticket is currently in our processing queue. Our team will address it as soon as we have any updates.

Create a Mobile App in Visual Studio

$
0
0

This is the project that you will get if you go though the Create a Mobile App in Visual Studio tutorial.

Question Comments

Added By: Etienne van der Kuy at: 6/15/2014 4:29:10 AM    

Hello,

I have copied all files for this solution but I keeping a "unspecified network error" (twice) when I run the project in the Simulator or after building a package and run it on a Android device. I think it has to do with the Northwind sample service that is used in the project?

Added By: Alex Skorkin - DevExpress at: 6/16/2014 3:06:11 AM    Hello Etienne,

To help us research the issue, could you please provide us with a sample project where you encounter these problems? (Is it possible for you to share a project like this?)Added By: Mark Davison 2 at: 7/21/2014 8:35:00 AM    

Hello,

I've been trying to run this example, but without success. I think there are a number of problems related to the 4.1.5 maintenance release, including outdated versions of dx.all.js and dx.all.debug.js, outdated versions of the layout files, and in addition, I get a 404 error when I try to run it:

Detailed Error Information:
Module           ManagedPipelineHandler
Notification   ExecuteRequestHandler
Handler           Handler
Error Code   0x00000000
Requested URL   http://localhost:53954/app.html
Physical Path   C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\DevExtreme 14.1\WebServer\app.html
Logon Method   Anonymous
Logon User   Anonymous
Request Tracing Directory   C:\Users\Mark\Documents\IISExpress\TraceLogFiles\DEVELOPMENT WEB SITE

Please see if you can run this example and let me know what you find.

Thank you,
Mark

Added By: Rob Bronstein at: 7/21/2014 6:16:00 PM    

This is excellent and very nicely done, its only a pity that a lot of the references are used by apple ios development syntax and not more like pc development reference as visual studio is still pc development platform.

Added By: Rob Bronstein at: 7/21/2014 6:20:56 PM    

I ran it under my 13.8 environment and all worked except the top buttons on the right hand side for ios7 gave me a javascript error but the rest of the buttons worked and so did all the different views. Also the content had all url errors but I didn't worry about that for the example.

How to set up binding for a web report using a collection of custom objects as a data source at design time

$
0
0

This example illustrates how to bind a report to lists for web projects at design time. To do this you need to extract your reports together with the corresponding classes representing your business objects into a separate assembly. Then, you can easily perform all necessary design-time binding using the BindingSource component (by specifying the required object type as its DataSource).

This approach differs from how this is done under the Windows Forms platforms in that you cannot assign your object to the BindingSource.DataSource property at design time. Instead, you should perform the binding right within the InitializeComponent method.

Question Comments

Added By: CodeGal at: 1/21/2014 7:21:17 PM    

So what are the design time bindings for controls set to in the report?

Added By: Olena at: 3/5/2014 5:03:22 PM    

Hi Support Team,
I've just downloaded Example and I see error in the XtraReport1.cs tab saying

"Could not find type 'Reports.Data'. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built using settings for your current platform or Any CPU. "

Unfortunately there is no ability to attach print screen.
What can I do to fix it?

Thanks!

Added By: ghsPt at: 4/7/2014 10:21:33 AM    

Hello!

I have a dataset with several objects.
If I want a list of several different objects with only one datasource, how can I do that?

Added By: Matt_Olson at: 7/20/2014 3:57:26 PM    

Missing design time objects in xtrareport1.cs

Added By: Andrew L (DevExpress Support) at: 7/21/2014 7:21:26 AM    Hello Matt,

To process your recent post more efficiently, I created a separate ticket on your behalf: T131788: E1936 - Missing design time objects . This ticket is currently in our processing queue. Our team will address it as soon as we have any updates.

Added By: Matt_Olson at: 7/21/2014 8:03:37 AM    

Sorry, I see that the missing source code is in the Example Runner download.  It is only missing from the web viewable portion (such as definition for InitializeComponent()) which is in XtraReport1.designer.cs I'm guessing which isn't in the web viewable version.

Added By: Andrew L (DevExpress Support) at: 7/21/2014 10:02:49 PM    Hi Matt,

I am happy to hear that the problem has been resolved. Thank you for letting us know of your progress. Please feel free to contact us if you have any further difficulties. We will be happy to assist you
Viewing all 7205 articles
Browse latest View live


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