Hi Julie – please find the requested test project in attached file. HTH.
https://supportcenter.devexpress.com/ticket/details/t233080/datagrid-how-to-set-row-height
https://js.devexpress.com/jQuery/Documentation/ApiReference/UI_Components/dxDataGrid/Row/
Wisej doesn’t change the way devextreme works. You need to write javascript. Use the Dx documentation, once you know how to change the row height in javascript, post a working sample using any framework and in case you can’t do the same using Wisej I’m sure someone will help you.
Solution 1 seems to work for us. Cookies in web browsers are still functional with several current web browser implementations.
Thank you Julie.
The theme would have to be a .theme JSON file, so if you got it from another vendor it’s likely in the wrong format. Just as you cannot use a devexpress theme with telerik or a wordpress theme with asp.net. Any theme from any vendor is not interchangeable.
Themes are simply JSON files. You can open any theme file in the theme builder, doesn’t matter who made it.
For more details on using custom CSS in your theme, see here: https://docs.wisej.com/theme-builder/user-interface/css-editor
Using Application.Navigate to access the html file is pretty simple.
Simply add the html file to your project, ie myhtml.html.
Then access it with Application.Navigate.
Application.Navigate(“myhtml.html")
See attached test case.
Thanks a lot – we’ll try out your proposals ASAP.
The Application.ClientId is stored in the browser’s LocalStorage. The reason you’re seeing ClientId changing after closing and reopening the browser is most likely due to recent browser privacy changes.
Modern browsers (Chrome, Edge, Firefox) have been implementing stricter privacy measures, including:
Solutions
1. Use Cookie-Based Storage Instead
You can store your own client identifier in cookies rather than relying solely on Application.ClientId:
// At application start, check for existing client ID in cookies
var existingClientId = Application.Cookies["MyClientId"];
if (string.IsNullOrEmpty(existingClientId))
{
// Generate and store a new client ID
var newClientId = Guid.NewGuid().ToString();
Application.Cookies.Add("MyClientId", newClientId);
}
2. Configure Session Storage to Use LocalStorage
In your Default.json, ensure you have the session storage set to “local”:
{
"sessionStorage": "local"
}
This allows the session to survive browser closure, but may still be affected by browser privacy settings. See https://docs.wisej.com/docs/concepts/configuration for more information
3. Implement User Authentication
The most reliable approach is to implement proper user authentication. When users log in, you can associate their session with their user account in your database, making browser storage irrelevant for session recovery:
// After successful login
Application.Session.UserId = authenticatedUserId;
// Store session info server-side linked to the user
4. Check Browser Settings with Users
Have affected users check their browser settings for:
Hope this helps,
Julie
Can you please attach a test case that reproduces the issue? Delete the bin and obj folders before posting to make the file size smaller.
Thanks,
Julie
You can do the first approach like this:
string myHtml = "<html><head><style>body{background:blue;}</style></head><body><h1>Hello</h1></body></html>";
string base64Html = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(myHtml));
webBrowser1.Url = new Uri($"data:text/html;base64,{base64Html}");
For the second approach, you can create an endpoint/handler that returns your HTML and navigate to it:
Application.Navigate(“/api/catalog?id=123”);
thx dear
It drops down automatically. You are trying to change the default behavior and breaking it. Post a working small test case that opens in VS and runs. This way it’s easier to fix your code. It’s too much time to copy your snippet in a working project.
Hi Julie,
What I need is that: when specific conditions are met (in parameters, etc; doesn’t concern the topic), I need one of the 2 posibilities:
1. Display the full html (with css, etc) in a webbrowser control. But I wasn’t able to find HOW to execute something like
WebBrowser wb;
wb.html=myHtml; //that doesn’t exist; what can I do?
2. Completely replace my application with myHtml. I tried:
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(html);
using (MemoryStream ms = new MemoryStream(bytes))
{
Application.DownloadAndOpen(“_blank”, ms, $”catalog.html”);
}
Application.Navigate(“javascript:window.close();”);
That works, but the browser display a warning “allow pop-up” or “pop-up blocked” that prevent the opening of the new tab.
The first approach will be better, if you can tell me how to “inject” all html in WebBrowser.
The HtmlPanel control in Wisej.NET is designed to display HTML content, but it doesn’t create a full browser environment. Instead, it renders HTML within Wisej’s own widget framework. Because of this, CSS pseudo-classes like :hover still work correctly, since they are handled by the browser. However, anchor links such as <a href=’#top’> do not behave as they normally would, because HtmlPanel does not create a standard browsing context with typical navigation. In addition, any JavaScript included in your HTML will not be executed.
If you want to display the HTML within your application while keeping the app active, use IFramePanel or WebBrowser control. These create a real iframe/browser context where CSS and anchor links work properly.
Hi Frank, here’s the video you requested…
Regards
Hi Frank,
In Release Mode I have the same performance.
I notice that the problem is when then form create the columns on the grid for the first time.
In fact, if instead of closing the form, I execute the ‘Hide’ method and subsequently ‘Show’ the problem does not occur.
Best regards
Angelo
Hi Angelo,
what is the performance when you run your project inside Visual Studio in Release Mode?
Best regards
Frank
Can you be more specific- what are you struggling with and what questions do you have that could be addressed by additional documentation?
Julie
Hi Frank,
When Running in debug mode inside Visual Studio.
If it helps, I’ll briefly describe what the software does when the form opens.
– The form contains a custom datagridview.
– The form’s MyBase.Load event calls the ‘DGV_M_SetColumns‘ method which adds the columns to the grid:
Typical code for adding a column
txtC = New ASNetL.Wsj3.Forms.wDataGridViewTextBoxColumn
FieldName = “prfvcl_targa”
With txtC
.Name = FieldName
.DataPropertyName = FieldName
.HeaderText = “PLATE”
.Width = 150
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.DefaultCellStyle.Format = “”
.ToolTipText = “Vehicle License Plate”
.Visible = True
.FilterEnable = True
.EditModeOnGrid = ASNetL.Wsj.wEnum.EditModeOnGridEnum.NoEditable
‘I add the column to the grid
DGV_M_GRD.Columns.Add(txtC)
End With
– The MyBase.Shown event of the form calls the ‘FILL‘ method which essentially performs the binding of the grid:
PgSQL_Conn = New NpgsqlConnection(ConnStr)
PgSQL_Conn.Open()
DgvData.Clear()
PgSQL_Command.Connection = PgSQL_Conn
PgSQL_Command.CommandText = qry + WhereFlt
PgSQL_Adapter.SelectCommand = PgSQL_Command
PgSQL_Adapter.Fill(DgvData)dgvBindingSource.DataSource = DgvView
dgv.AutoGenerateColumns = False
dgv.DataSource = dgvBindingSource
In summary, I noticed that the ‘DGV_M_SetColumns’ method slows down the form display (up to 10 seconds). In fact, if it’s commented out (and I don’t call it), the form displays quickly. However, this only happens when running with Visual Studio (IISExpress). If the application is deployed on a server (IIS), everything works without any delays.
Tanks
Hi Angelo,
what does “open the form” actually mean? Open in the designer or running in debug mode inside Visual Studio?
Best regards
Frank
