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.
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
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#.
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
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.
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
Hi Simone,
#1803 is fixed in releases 1.5.56 / 2.0.13.
Best regards
Frank
Hi Frank,
thank you, all make sense.
Work perfectly with PointToScreen!
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.
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
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
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
Hi Luca
I was using application update. Loader spins on chrome not on edge.
Thanks
For you help
Ewan
Hi Nic,
excellent it works
thank you
Cristian
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().
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
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.
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
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.
