All Answers

0 votes
In reply to: IOC containers

Use the WinForms or WPF samples. I’m assuming the Container implementation is synchronized since they always declare it as static.

One error in the samples in the link is that it replaces the parameterless constructor. You can add and overload the constructor with the parameters receiving the different implementations, but always keep the parameterless constructor for inheritance and the designer.

And you have to be careful if you register a singleton since it will be reused by different sessions. Another way would be to create the container as a session instance instead of a static. In this case the singleton will be recreated in each session.

  • Luca answered Feb 21, 2019 - 8:58 pm
  • last active Feb 21, 2019 - 8:59 pm
0 votes
In reply to: IOC containers

Maybe it is more along the lines of how to do the integration for example if you follow this guide and use the same logic for WiseJ and I’m having issues getting it to work and so I don’t know if I need to be thinking more like it is a web api or web forms type app.

https://simpleinjector.readthedocs.io/en/latest/windowsformsintegration.html

 

 

0 votes
In reply to: IOC containers

Any .NET IOC Framework would work. There shouldn’t be anything different for a Wisej application than any .NET code. Without an IOC Framework complicating what should be simple, it’s just a combination of abstracting your implementation into interfaces and use factory classes and service providers in C#.

  • Luca answered Feb 21, 2019 - 6:47 pm
0 votes
In reply to: Version 1.5.x question

Hi Edmond,

as announced in our last news mail we will continue to fix bugs in 1.5 version till end of April.

For the upgrade of 1.5 to 2.0 we listed a couple of things to consider in the read me file  but
it should be a safe and straight forward process not requiring too many efforts.

What issues have you seen with 2.0 ? Please report them so we can take a look.
So far we are very happy with the 2.0 releases.

Best regards
Frank

0 votes
In reply to: Session fixation

Wisej doesn’t use cookies and doesn’t set the session id in the URL. The session id is stored in the browser’s session storage. Which is wiped out when closing the browser or the tab. It’s not possible to “fix” a value in sessionStorage before hand.

The session id (coming from session storage) is used in the URL only when opening the websocket connection (which cannot be shared) and when requesting http data from datagrids (combined with the unique id of the specific server-side instance of the component returning the data.)

Additionally, before restoring a session Wisej verifies the client’s fingerprint. The attacker and the victim must have the same IP address (IP addresses can be spoofed only to send messages, cannot receive any response), the same browser, user agent, etc.

Script injections also don’t work with Wisej because there is not HTML page response, there is no form submit, etc. All the data exchange is done through compressed JSON. Parsing JSON doesn’t execute anything and setting dom elements also doesn’t execute anything.

  • Luca answered Feb 20, 2019 - 11:19 pm
0 votes
In reply to: Startup Show Loader

The startup loader is different from the ajax loader. The startup can be anything, we have some projects with full page animated startup loaders.

The ajax loader, as well as the mask color and transparency,  are defined in the themes. The ajax image is “ajax-loader”. The mask color is “modalMask”.

HTH

  • Luca answered Feb 20, 2019 - 10:57 pm
0 votes

Hi Simone,

#1803 is fixed in releases 1.5.56 / 2.0.13.

Best regards
Frank

0 votes

Hi Frank,

thank you, all make sense.

 

Work perfectly with PointToScreen!

2 votes

You can do that in several ways.

1. is to modify the GoogleMaps extension and add the map type to startup.js in the init() function.

2. Without modifying the extension, is to add a JavaScript component to the page (in Wisej 2 you don’t need the JavaScript component and you can use the new ClientEvents property), and add a JavaScriptEvent to the map control for the “initialized” event whit this code:


this.map.mapTypes.set("OSM", new google.maps.ImageMapType({
    getTileUrl: function (coord, zoom) {
        return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
    },
    
    tileSize: new google.maps.Size(256, 256),
    name: "OpenStreetMap",
    maxZoom: 18
}));

this.map.setMapTypeId("OSM")

See screenshot attached.

  • Luca answered Feb 19, 2019 - 7:16 pm
0 votes

Hi Tim,

we do have some plans in the works regarding support for DataGridViewColumnGroups but
they are not yet implemented and currently we do not have a specific release date scheduled yet.
We´ll keep you updated.

Best regards
Frank

0 votes

Hi Luca

Even on Chrome it takes thirty seconds to render the DGV with 30 out of 275 rows visible.

The are three multi combos and two date pickers per row.

In addition rendering will sometimes fail so some rows are blank dispite the data being there.

Reloading the grid usually corrects the issue

Thanks for your help Ewan

0 votes

Hi Simone,

Right click not fired for MouseClicks in a DGV is a bug (logged as #1803).
Will be fixed in the next release.
As a workaround you can use MouseUp or MouseDown events.
Both work fine with the right button.

For the coordinates, they are relative to the control (in that case the datagrid,
or to a cell in case of a CellEvent).
You´ve probably mixed them with the browser coordinates which are relative to the page.
Please use conversion functions like PointToScreen, RectangleToScreen, PointToClient, RectangleToClient
to convert from client to screen and vice versa.

The using block you have commented in your code as a question fails because the component is disposed
after leaving the block.

Best regards
Frank

0 votes
In reply to: Showloader animation

Hi Luca

I was using application update. Loader spins on chrome not on edge.

Thanks

For you help

Ewan

 

0 votes

Hi Nic,

excellent it works

thank you

Cristian

1 vote
In reply to: Showloader animation

showLoader() was briefly removed in a dev build on Jan 19th to make it a property. It’s back in as a method since Jan 25th. On the control side it was always a property ShowLoader = true|false. When you use Call(“showLoader”) nothing happens on the client until the request is complete unless you spawn a task, or use async methods or use Application.Update().

  • Luca answered Feb 19, 2019 - 5:18 pm
1 vote

Hi Cristian,

You can set your own PDF viewer source:

this.pdfViewer1.ViewerType = Wisej.Web.PdfViewerType.Custom;
this.pdfViewer1.ViewerURL = “pdfjs-1.9.426/web/viewer.html?file=[source]”;

The source can be an embedded resource within your application.

HTH

Nic

0 votes

There is no render complete event, the rendering is done by the browser.

The delay is probably caused by creating an additional control for each cell. We test on Chrome and up to 2,000 controls on a page it takes about 1 second for the browser to render everything. DataGridView cells are not controls and only the visible section is created as HTML, which is immediate.

  • Luca answered Feb 19, 2019 - 5:11 pm
0 votes

Hi Simone,

it´s still in Wisej 2.0 but had to be renamed. It´s now named Wisej.Web.Spacer (see #1619).

Best regards
Frank

0 votes

It uses the memory that your application uses. If you create 100 windows and never dispose them they will stay in memory. If you create a large data set and keep it (or save it in the session in ASP.NET) it will stay there until it’s disposed. It’s easy to profile your app. Create 10 sessions and write down the memory used by the IIS process, that is your base line, create 10 more, subtract and divide by 10.

Usually, what would be considered a large ASP.NET application we consider trivial and can be hosted easily for thousands of users on a small web server.

  • Luca answered Feb 15, 2019 - 11:10 pm
  • last active Feb 15, 2019 - 11:10 pm
0 votes

And about memory?

  • Jeo dg answered Feb 15, 2019 - 11:01 pm
Showing 6221 - 6240 of 11k results