Hit the same issue, but there is a minor error in Luca’s code (Haserror should be HasErrors – casing and plural).
Some additional information to help:
1. Create a new class in your project with the constructors for all the ErrorProvider options and the default without value. I tried to use a dynamic but the designer didn’t like it (even though the code still worked). (eg below)
using Wisej.Web;
namespace MyProject.WiseJCustomClasses {
public class CustomErrorProvider : ErrorProvider {
private IContainer container;
private IContainerControl containerControl;public CustomErrorProvider() { }
public CustomErrorProvider(IContainer container) {
this.container = container;
}public CustomErrorProvider(IContainerControl containerControl) {
this.containerControl = containerControl;
}protected override void OnWebRender(dynamic config) {
base.OnWebRender((object)config);
if (!this.HasErrors) {
config.errors = null;
}
}
}
2. Edit your designer code where the ErrorProvider is created and change to the Custom Error Provider (eg below)
this.errorProvider1 = new WiseJCustomClasses.CustomErrorProvider(this.components);
Hi Glenn,
Did you figure out the issue? You also tried closing out of the tab and restarting VS, correct?
Let us know what you find!
Best regards,
Levie
I checked the “InitializationFailure” string. It cannot show it like that unless the assembly is corrupted. Can you please send to support@iceteagroup.com the Wisej.Framework assembly?
What happens to the existing rows and cells with the control when you update the grid? Do you dispose the progressbar controls or let the GC collect them?
Hi Luca,
Pressing F5 does display the grid.
The rows are cleared using dataGridView1.Rows.Clear(); and filled by the attached row_generation.txt file (simplified to 1 control)
In Wisej_error.log line 20348, you see the “Uncaught Error: Remove Error: wisej.web.PictureBox[undefined] is not a child of this widget!”
There are more of them in the log.
When no uncaught error is displayed, then have a look at the attached pictures Screenshot1 & 1b to see the response.
Once not displaying the controls, pressing the buttons on top of the screen to regenerate a new set of rows ends up with the messages from Screenshot 1 & 1b.
Best Regards.
It’s probably an error on the client that is blocking the update. See in console.
If you hit refresh, do you get the correct state on the client?
Don’t need to call Suspend/ResumeLayout().
How are the cell controls added/removed?
VirtualMode is not needed. That’s only to handle large data sets on the server. Nothing changed for the client since the wisej.web.DataGrid widget is always in virtual mode.
So how can I correct it? I already uninstall/install, but same problem.
Something is wrong in your installation or Wisej versions are mixed. The collection dialog should have a drop down button and show all the ribbon item types. see attached screenshot
It happens when the browser is slow at rendering the font. It’s usually better to embed the font in the theme. The ThemeBuilder app can do that for you. What browser are you using? Can you also send a zip with a small sample and the font?
I get an “InitializationFailure” error. Which is fired when Wisej cannot initialize anything. It’s usually caused by an UnauthorizedAccessException to write to the system’s Temp directory. It should have been localized to “Wisej failed to initialize for the following reason: {0}.” and the reason.
Please see attached references for the project.
Hi Glenn,
can you please make sure that you don´t have any references left to Wisej.Core and Wisej.Web ?
Best regards
Frank
Did you try this?
https://wisej.com/docs/2.0/html/E_Wisej_Web_DataGridView_Sorted.htm
Hi Andrew,
After restarting your computer and VS does the problem keep occuring?
Best regards,
Levie
Hi Luca,
thanks for your feedback, we roolback our changes.
You say :
When you close the browser or tab, Wisej will stop sending the keep alive “pings” and when the session will expire you will get the page and all other controls disposed.
At the very begging we set sessions unlimited because client doesn’t want the “Expiry session message”.
Default.json OLD
"loaderTimeout": 1000,
"sessionTimeout": 0,
"keepAliveInterval": 15,
"enableWebSocket": true
Default.json NEW
"loaderTimeout": 1000,
"sessionTimeout": 60,
"keepAliveInterval": 15,
"enableWebSocket": true
Now we tested that session are disposed and also components. We manage Application_SessionTimeout to keep session alive on some conditions.
Closing the browser or closing the tab is the same as hitting refresh or editing the URL. Calling a web method or any ajax request in window.onbeforeunload may fail randomly because the browser will simply close the communication and it may close it while communicating. Synchronous (blocking) ajax calls have been deprecated long ago in all browsers and all Wisej requests are async. There is no way in any browser to differentiate between closing and refreshing.
When you close the browser or tab, Wisej will stop sending the keep alive “pings” and when the session will expire you will get the page and all other controls disposed.
If all your users got kicked out I assume it’s on IIS. In which case you should see in the event viewer what caused the app pool to recycle. It can be an unhandled exception in a separated thread, or the app writing anything in /bin.
Hi all,
the problem is that when user is closing browser tab or is closing browser the dispose on main page and all his childrens isn’t called. Don’t now if is a wanted behaviour or not, we create a workaround to make sure that dispose is called also when user close browser and all the handlers are unsubscribed.
Default.html on a script
// quando l'utente chiude la finestra
// o la tab mi assicuro di fare il dispose
window.onbeforeunload = function () {
App.CompleteDispose();
};
Program.cs
[WebMethod]
public static void CompleteDispose()
{
PgMain pgMain = Application.MainPage as PgMain;
if(pgMain != null && !pgMain.IsDisposed && !pgMain.Disposing)
{
pgMain.Dispose();
}
}
We are now testing. Someone can confirm this behaviour ?
Thanks
Icons are always set to scale. The size is set in the theme. Or you can force the size of any image assigned to any control by assigning an ImageList and set the size of the image. You don’t have to put the images in the ImageList, although you can.
For the alignment you can use the https://wisej.com/docs/2.0/html/P_Wisej_Web_ToolBar_TextAlign.htm property. It supports the text on the right of the icon (or inverted for RTL) or below. We don’t support icons below the text in the ToolBar (we have not implemented the TooStrip controls).
There is a problem with reading the property back here:
/// <summary>
/// Shows or hides the shortcut button.
/// </summary>
[DefaultValue(false)]
public bool ShowShortcut
{
get => this.shortcut.Visible;
set => this.shortcut.Visible = !this.CompactView && value;
}
The shortcut icon returns Visible false when set to true while the parent item is collapsed. It works at runtime. We’ll post a fix to the source project in Github.
Hi Mark Reed and Luca,
thanks for your answers.
Client and us are using chrome last version.
It’s strange because this error happen also in localhost? How can be a websocket connection lost in localhost ?
I give more details, we need to keep all datas and all clients continuously update. So we create a static class available from every client, where every page of client can subscribe and unsubscribe. We subscribe on creation and unsubscribe on dispose (image1 and image2). One of this page use also calendar and keep it update.
We are doing the following and only sometimes the problem happen:
Seems that old handler is still subscribe and try to update datas on a calendar that is not instantiated ?
Note: on this WebSocketException all clients are throw out from their sessions and application restart
