All Answers

0 votes

Hello Frank,

I just had the forum response notification and I did not check the documents your are mentioning yet.

Thank you so much for your reaction !!!

I will keep you aware of  any changes

Best regards,

Eddy.

 

0 votes

Hi Eddy,

the theme you have selected in the designer may not be the same you chose at runtime of your application.

Find more information here

https://docs.wisej.com/docs/concepts/theming

Best regards
Frank

0 votes

Hi Uwe,

if you are using a library that is .NET core only you need to handle the multi targeting and reference it for .NET 8 only

Find more information here

https://docs.wisej.com/docs/releases/whats-new-in-3.0/multi-targeting

Best regards
Frank

0 votes

Hi Ali,

Application.Update () can take any Wisej object as parameter and the result is always the same:
The client syncs with the server. So this is the recommended approach to update the UI after a background task.

The 2nd call is totally unrelated to this and cannot be used as a replacement for the 1st call.

Best regards
Frank

0 votes

I found the problem, Luca. It occurs when creating a Web Desktop Application project. The issue appears in the Windows-type forms, not in the Pages. I am attaching the project for reference. I deleted the bin folder, the attached file may not exceed 4000 KB (this is to low, only the wisej.framework has 10 MB).

Thanks in advanced.

0 votes

Cannot reproduce, see screenshot attached. Pls attach a small reproducible test case.

  • Luca answered Dec 23, 2023 - 11:47 pm
0 votes
In reply to: Hosted in IIS locally

You probably skipped some steps. Unclear from a screenshot.

  • Luca answered Dec 21, 2023 - 4:56 pm
0 votes

You can use as you would with any .NET code.

  • Luca answered Dec 21, 2023 - 4:55 pm
0 votes

Look for viewport and meta tags online when developing for mobile pages. We cannot provide you with personalized assistance for issues that are not a problem in Wisej and we cannot interpret a screen shot or incomplete descriptions.

This group is for free support related to specific Wisej issues. If you have detected a problem with Wisej, please post a clear issue, with steps to reproduce and with a small runnable reproducible case. Thank your for your understanding.

  • Luca answered Dec 21, 2023 - 4:54 pm
0 votes

Understood, we’ll discuss the internally and come back.  Thank you for the quick response.

0 votes

Hi Alex,

Wisej.NET Hybrid Starter is available for everyone, but with some limts. Premium Extensions are not supported with this version. The Technology Partner program is the better option in this case.

Please contact us at sales(@)wisej.com and share your requirements (current license situation and plans for Hybrid). We are happy to look into the TP options for you.

Thanks
Thomas

  • Thomas (ITG) answered Dec 21, 2023 - 10:33 am
  • last active Dec 21, 2023 - 10:34 am
0 votes

IIS support is from Microsoft. For deployment help we have a dedicated book named Deployment on our documentation page.

  • Luca answered Dec 20, 2023 - 5:18 pm
0 votes
In reply to: Templates

Here is an overview of the templates:
https://docs.wisej.com/docs/getting-started-1/new-project
https://docs.wisej.com/hybrid/start/getting-started

Windows form can be opened in web thru wisej?
They’re not native Windows windows, they’re popups within the browser.
I’ve attached a screenshot of what the template “Web Application” looks like- you can see that the window is confined to the bounds of the brower.

Do all the windows support coding?
Yes.

This also can be easily viewed in mobile apps?
Yes. Just like any other website, you can view a Wisej application on a mobile phone.

What is the use of Hybrid remote and hybrid local apps if above apps can meet the mobile requirement?

You need to use the Hybrid remote or Hybrid local template if you want integration with the device’s native features (ie camera, accelerometer, native authentication). You need Hybrid remote or Hybrid local template if you want it to run as a native app, instead of just viewing it in the browser of the phone.

Hope this helps,

Julie

 

0 votes

Hi Hadi,

Did you follow the guides in these videos?

Wisej.NET 3.5 and Wisej.NET Hybrid Release Event

Accelerate Mobile Development with Wisej.NET Hybrid

https://docs.wisej.com/hybrid/development/local-application

 

If you still have issues, please send a video repeating the process from the videos and demonstrating the error to support AT wisej DOT com.

 

Thanks,

Levie

0 votes

Hi there,

Populating a ComboBox with SerialPort.GetPortNames() doesn’t work.
The combobox remains empty?

SerialPort.GetPortNames() does return an array of the server ports, though.

0 votes

The tutorial in question uses Dapper to access a SQLite database.
Some alternative ways to design this project would be:
– Read the data from a JSON file (The JSON file is your “database”)
– Create the data in C# code, as C# objects
– Use SQL commands to access a SQLite or SQL database (instead of using Dapper, we just write the code to connect to the database ourselves).

Each of these examples would have different code for creating new rows and editing existing rows, based on how it’s accessing the database, and what type of database it is.
The code to create a modal/popup is the same though.

Here is a sample that uses the simplest method- it creates the data in C# code, as C# objects. So this sample has no code for database access. The code just opens the modal and edits the data in the datagridview.

Some relevant bits of code from the sample:

This creates a BindingLIst, binds it to the DataSource of the datagridview, and then fills it with data: Note that data can be added to the BindingList before and after it is bound to the datagridview- it will all show up in the datagridview.

//Page1.cs
BindingList PeopleList = new BindingList(); //create empty BindingList
private void Page1_Load(object sender, System.EventArgs e)
{
PeopleList.Add(new Person() { FirstName = "John", LastName = "Doe", Age = 40 });
dataGridView1.DataSource = PeopleList; //bind the datagridview to the BindingList
PeopleList.Add(new Person() { FirstName = "Jane", LastName = "Doe", Age = 30 });
PeopleList.Add(new Person() { FirstName = "Tom", LastName = "Smith", Age = 21 });
PeopleList.Add(new Person() { FirstName = "Emily", LastName = "Brown", Age = 57 });
PeopleList.Add(new Person() { FirstName = "Susan", LastName = "Green", Age = 46 });
}

This code opens a modal dialog on button click. It also gets data from the modal dialog and uses that data to add a new entry to the table.

//Page1.cs
private void button1_Click(object sender, System.EventArgs e)
{
//dialog will not exist outside of this using statement
//handy because then it doesn't clog up memory and you don't have to remember to dispose of it.
using (var dialog = new ModalPopup())
{
dialog.ShowDialog();
PeopleList.Add(new Person() { FirstName = dialog.FirstName, LastName = dialog.LastName, Age = dialog.Age });
}
}

Here I attached an event handler to the CellEndEdit event. All it does is display a message. If you were connecting to an external database, this would be a good time to write data to the database,
//Page1.cs
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
AlertBox.Show("You edited a value. If we were connected to a database, this would be a great time to save it.");
}

The code for the modal popup is ModalPopup.cs and it looks like this. I created several public fields (FirstName, LastName, Age) to store the data. In the button1_Click event, I show an AlertBox, and assign values to the public variables. I then close the popup.

//ModalPopup.cs
public string FirstName { get; private set; }
public string LastName { get; private set; }
public int Age { get; private set; }
public ModalPopup()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
AlertBox.Show("submitted");
FirstName = textBox1.Text;
LastName = textBox2.Text;
Age = int.Parse(typedTextBox1.Text);
this.Close();
}

Hope this helps!
-Julie

  • Julie(ITG) answered Dec 19, 2023 - 8:36 pm
  • last active Dec 19, 2023 - 8:43 pm
0 votes

If your javascript code is very simple, there’s an easier way to do this: you can just use Eval instead of Call. You will just put the entire contents of the function inside of Eval, like so:

Eval("javascript code here");

Here’s the documentation on using javascript in Wisej, you will find this helpful:
https://docs.wisej.com/docs/concepts/javascript

0 votes

Note that it’s not enough to just create a .js file, like startup.js and put it in the solution.
There’s some extra steps to get the C# code (in this case CKEditor.cs) to access it:

1.
startup.js is an embedded resource. If you click on starup.js and look at the file properties, you will notice the build action is set to “embedded resource” (see screenshot)

2.
Look at this code from CKEditor.cs:
private string BuildInitScript()
{
IWisejControl me = this;
dynamic options = new DynamicObject();
string script = GetResourceString("Wisej.Web.Ext.CKEditor.JavaScript.startup.js");
options.config = this.Options;
options.fonts = this.FontNames;
options.basePath = CKEditor.BaseUrl;
options.showFooter = this.ShowFooter;
options.showToolbar = this.ShowToolbar;
options.externalPlugins = this.ExternalPlugins;
script = script.Replace("$options", options.ToString());
return script;
}

Specifically, we care about this line: string script = GetResourceString("Wisej.Web.Ext.CKEditor.JavaScript.startup.js"); This reads the contents of the file as a string from the embedded resource.

Note that some widgets like the CKEditor also rely on packages, those are the JS core packages of the component itself.
For example this cdn: https://cdn.ckeditor.com/4.12.1/full-all/

0 votes

If you look at the Wisej extensions, which are open source on github, you can see some examples which are similar to what you are trying to do.

For example, if we look at the CKEditor code: https://github.com/iceteagroup/wisej-extensions/tree/3.2/Wisej.Web.Ext.CKEditor

From CKEditor.cs:

public bool ReadOnly
{
get { return this._readOnly; }
set
{
if (this._readOnly != value)
{
this._readOnly = value;
Call("setReadOnly", value);
}
}
}
private bool _readOnly = false;

You’ll notice it is calling the function setReadOnly and sending in the parameter value

The javascript code is located in the file startup.js, and looks like this:
// applies the read only state.
this.setReadOnly = function (value) {
try {
if (this.editor.readOnly != value)
this.editor.setReadOnly(value);

} catch (e) { }
}

So, instead of embedding your javascript in HTML, it should be in a .js file.

  • Julie(ITG) answered Dec 19, 2023 - 2:45 pm
  • last active Dec 19, 2023 - 2:54 pm
0 votes

Hi Ruben,

Looks like you have some sort of a background process that’s constantly pushing data or firing events to the application.

It can also be a Timer component that you’re using to get data?

Best,
Alaa

//

Showing 801 - 820 of 11k results