Can you send me your web.config or the complete test peoject?
The stack trace shows that the wisej handler is not invoked.
Hi Frank,
ExpandAll & CollapseAll seem to be OK now but it looks treenodes without children are still not indented correctly (WJ-7411). This may be due to +/- sign when a node has a child. And also, please consider if treeview.CheckBoxes is set to true.
Using 1.2.22.0
Thanks.
Hi Luca,
I’ve tried to run a re-published test project with Ultridev as you have shown above and no matter what I try I still get 404 on the .wx file.
http://127.0.0.1/wisej/wisej.wx 404 (Not Found)
I am running on a x64 Win7 machine, not sure if that makes any difference. Here is all I can get out of UltiDev log.
******** Starting hosting “C:\Temp\wisej” ********
01:26:41.0613 PM Created ASP.NET AppDomain (AppDomain ID={7048dff9-986e-42fc-8ea1-dcce3540d418}) for application “” (Application ID={7b92eb88-f419-4385-b0ae-06a25afda260}).
Environment info: Command line: “C:\Program Files (x86)\UltiDev\Web Server\UWS.InteractiveServer.Clr4AnyCPU.exe”
Process ID: 900
Process user name: Mark-PC\Mark
Bitness: 64
CLR version 4.0.30319.42000
Process retired: False
Max request threads: 800
Max I/O threads: 800
01:26:41.1873 PM Starting accepting requests for “C:\Temp\wisej\” (AppDomain ID={7048dff9-986e-42fc-8ea1-dcce3540d418}).
01:26:49.5018 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Got context from this.listener.EndGetContext(ar);
01:26:49.5018 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Entered HandleRequest(requestContext);
01:26:49.5028 PM Received GET request of size 0 for: “/wisej/”.
01:26:49.5088 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:26:49.5128 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Entered AspNetRequest() constructor.
01:26:49.5158 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: ProcessRequest: AspNetRequest object instantiated.
01:26:49.5178 PM Handling request for “/wisej/” mapped to “C:\Temp\wisej”.
01:26:49.5208 PM Request path modified to “/wisej/Default.html” mapped to “C:\Temp\wisej\Default.html”.
01:26:49.5268 PM ProcessRequest: Bypassing application server – serving “/wisej/” straight up.
01:26:49.5318 PM SendResponseFromMemory(): Starting serving “/wisej/Default.html” as uncompressed (or compressed by application) text/html. HTTP result 200. Data length: 177
01:26:49.5438 PM Written 177 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/”.
01:26:49.5448 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Entered AspNetRequest.GoOutOfBusiness().
01:26:49.5448 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:26:49.5448 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Leaving AspNetRequest.GoOutOfBusiness().
01:26:49.5448 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:26:49.5468 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Leaving HandleRequest(requestContext);
01:26:49.5478 PM @@@@ LT [00000000-0000-0000-2300-0080000000FE] for /wisej/: Leaving AcceptRequest();
01:26:49.5908 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Got context from this.listener.EndGetContext(ar);
01:26:49.5908 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Entered HandleRequest(requestContext);
01:26:49.5908 PM Received GET request of size 0 for: “/wisej/wisej.wx”.
01:26:49.5918 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:26:49.5918 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest() constructor.
01:26:49.5918 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: ProcessRequest: AspNetRequest object instantiated.
01:26:49.5918 PM Handling request for “/wisej/wisej.wx” mapped to “C:\Temp\wisej\wisej.wx”.
01:26:49.5918 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Before HttpRuntime.ProcessRequest().
01:26:49.9028 PM SendResponseFromMemory(): Starting serving “/wisej/wisej.wx” as uncompressed (or compressed by application) text/html; charset=utf-8. HTTP result 404. Data length: 2705
01:26:49.9068 PM Written 2705 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/wisej.wx”.
01:26:49.9158 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.EndOfRequest(). this.responseClosed = False
01:26:49.9168 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.GoOutOfBusiness().
01:26:49.9168 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:26:49.9168 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Leaving AspNetRequest.GoOutOfBusiness().
01:26:49.9208 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: ProcessRequest: HttpRuntime.ProcessRequest() completed successfully.
01:26:49.9208 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:26:49.9208 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Leaving HandleRequest(requestContext);
01:26:49.9218 PM @@@@ LT [00000000-0000-0000-2400-0080000000FE] for /wisej/wisej.wx: Leaving AcceptRequest();
01:28:02.2989 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Got context from this.listener.EndGetContext(ar);
01:28:02.2989 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Entered HandleRequest(requestContext);
01:28:02.2989 PM Received GET request of size 0 for: “/wisej/wisej.wx”.
01:28:02.2989 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:28:02.2989 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest() constructor.
01:28:02.2989 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: ProcessRequest: AspNetRequest object instantiated.
01:28:02.2989 PM Handling request for “/wisej/wisej.wx” mapped to “C:\Temp\wisej\wisej.wx”.
01:28:02.2999 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Before HttpRuntime.ProcessRequest().
01:28:02.3019 PM SendResponseFromMemory(): Starting serving “/wisej/wisej.wx” as uncompressed (or compressed by application) text/html; charset=utf-8. HTTP result 404. Data length: 2705
01:28:02.3019 PM Written 2705 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/wisej.wx”.
01:28:02.3029 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.EndOfRequest(). this.responseClosed = False
01:28:02.3029 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.GoOutOfBusiness().
01:28:02.3029 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:28:02.3029 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Leaving AspNetRequest.GoOutOfBusiness().
01:28:02.3039 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: ProcessRequest: HttpRuntime.ProcessRequest() completed successfully.
01:28:02.3039 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:28:02.3039 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Leaving HandleRequest(requestContext);
01:28:02.3039 PM @@@@ LT [00000000-0000-0000-2500-0080000000FE] for /wisej/wisej.wx: Leaving AcceptRequest();
01:28:27.2033 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Got context from this.listener.EndGetContext(ar);
01:28:27.2033 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Entered HandleRequest(requestContext);
01:28:27.2033 PM Received GET request of size 0 for: “/wisej/”.
01:28:27.2033 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:28:27.2033 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Entered AspNetRequest() constructor.
01:28:27.2033 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: ProcessRequest: AspNetRequest object instantiated.
01:28:27.2033 PM Handling request for “/wisej/” mapped to “C:\Temp\wisej”.
01:28:27.2043 PM Request path modified to “/wisej/Default.html” mapped to “C:\Temp\wisej\Default.html”.
01:28:27.2043 PM ProcessRequest: Bypassing application server – serving “/wisej/” straight up.
01:28:27.2043 PM SendResponseFromMemory(): Starting serving “/wisej/Default.html” as uncompressed (or compressed by application) text/html. HTTP result 200. Data length: 177
01:28:27.2043 PM Written 177 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/”.
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Entered AspNetRequest.GoOutOfBusiness().
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Leaving AspNetRequest.GoOutOfBusiness().
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Leaving HandleRequest(requestContext);
01:28:27.2043 PM @@@@ LT [00000000-0000-0000-2600-0080000000FE] for /wisej/: Leaving AcceptRequest();
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Got context from this.listener.EndGetContext(ar);
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Entered HandleRequest(requestContext);
01:28:27.2574 PM Received GET request of size 0 for: “/wisej/wisej.wx”.
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest() constructor.
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: ProcessRequest: AspNetRequest object instantiated.
01:28:27.2574 PM Handling request for “/wisej/wisej.wx” mapped to “C:\Temp\wisej\wisej.wx”.
01:28:27.2574 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Before HttpRuntime.ProcessRequest().
01:28:27.2584 PM SendResponseFromMemory(): Starting serving “/wisej/wisej.wx” as uncompressed (or compressed by application) text/html; charset=utf-8. HTTP result 404. Data length: 2705
01:28:27.2594 PM Written 2705 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/wisej.wx”.
01:28:27.2594 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.EndOfRequest(). this.responseClosed = False
01:28:27.2594 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.GoOutOfBusiness().
01:28:27.2604 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:28:27.2604 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Leaving AspNetRequest.GoOutOfBusiness().
01:28:27.2604 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: ProcessRequest: HttpRuntime.ProcessRequest() completed successfully.
01:28:27.2604 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:28:27.2614 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Leaving HandleRequest(requestContext);
01:28:27.2614 PM @@@@ LT [00000000-0000-0000-2700-0080000000FE] for /wisej/wisej.wx: Leaving AcceptRequest();
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Got context from this.listener.EndGetContext(ar);
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Entered HandleRequest(requestContext);
01:28:34.4398 PM Received GET request of size 0 for: “/wisej/wisej.wx”.
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Entered ApplicationRequestDispatched.ProcessRequest(), about to construct AspNetRequest object.
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest() constructor.
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: ProcessRequest: AspNetRequest object instantiated.
01:28:34.4398 PM Handling request for “/wisej/wisej.wx” mapped to “C:\Temp\wisej\wisej.wx”.
01:28:34.4398 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Before HttpRuntime.ProcessRequest().
01:28:34.4418 PM SendResponseFromMemory(): Starting serving “/wisej/wisej.wx” as uncompressed (or compressed by application) text/html; charset=utf-8. HTTP result 404. Data length: 2705
01:28:34.4418 PM Written 2705 bytes (before compression, if any) in responding to “http://127.0.0.1/wisej/wisej.wx”.
01:28:34.4428 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.EndOfRequest(). this.responseClosed = False
01:28:34.4428 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Entered AspNetRequest.GoOutOfBusiness().
01:28:34.4428 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Starting AspNetRequest.GoOutOfBusiness() cleanup.
01:28:34.4428 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Leaving AspNetRequest.GoOutOfBusiness().
01:28:34.4428 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: ProcessRequest: HttpRuntime.ProcessRequest() completed successfully.
01:28:34.4438 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: ProcessRequest: Leaving ApplicationRequestDispatched.ProcessRequest().
01:28:34.4438 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Leaving HandleRequest(requestContext);
01:28:34.4448 PM @@@@ LT [00000000-0000-0000-2800-0080000000FE] for /wisej/wisej.wx: Leaving AcceptRequest();
😛
Ok, have a nice weekend too, Luca!
A
It was Luca. Frank already took time off. 🙂
Thank you, Frank. I thought this would be the problem, since I had observed some strange behaviour in the designer. To visualize panels in base class controls I had set their background colours and after saving or drag-n-drop or close/open the inheriting control, colours changed, i.e. higher z-index panels surfaced to the top. Hope you understand what I mean. I haven’t managed to replicate the behaviour consistently though. If I do, I ‘ll send you an example.
Thanks again, and have a nice weekend (hope you’re planning to take some time off! )
Alex
Hi Tiago,
In one of the linux early tests I could compile everything using mono (using http, not websocket). One of the issues that we will have to solve when we get there (after the release) is the lack of HTTP/WebSocket servers on linux and the cumbersome server/app interfaces. Apache was not designed for WebSocket, but it has a mod that can tunnel to another WebSocket server.
One thing I’m looking at is Owin and Owin/Katana (Open Web Interface). It will be part of the embedded wisej coding. This way we can expose an open interface to any owin-compatible web server, including self hosting.
Best,
Luca
Hi Alex,
I had a quick look. It seems that one of the inner panel “swallowed” the textboxes and buttons changing the hierarchy. It may have happened when dragging on the designer. Controls are registered in the browser using the parent/child hierarchy.
So now you should either:
HTH
Best,
Luca
Oh, I had dragged and dropped a Javascript “control” on the designer and then I was trying to double-click or right click on it to edit… I hadn’t seen the extra properties JavaScript and JavaScriptSource added to the usercontrol.
Now, although your sample works, when I put it in my project it doesn’t. My user control inherits from another Usercontrol which in turn inherits from a base usercontrol. I have attached your sample project modified so that it doesn’t work! Have a look.
Best,
Alex
Hi Alex,
WJ-7412 is fixed in our latest build (1.2.22).
Best regards
Frank
Hi Cris,
WJ-7410 and WJ-7411 are both fixed in build 1.2.22 that can now be downloaded.
Best regards
Frank
A new build (1.2.22) is now available. It includes the following fixes:
| Item | Type | Priority | Severity | Title | Resolution |
| WJ-7410 | Bug | Low | Trivial | TreeView.CollapseAll hides all nodes | Complete |
| WJ-7411 | Bug | Low | Trivial | TreeNodes without children are not indented correctly | Complete |
| WJ-7412 | Bug | Low | Trivial | Tabs in the MdiTabView don´t show the icon associated with the mdi child | Complete |
| WJ-7413 | Bug | Low | Trivial | Icons on tabs are too small: theme issue. | Complete |
| WJ-7414 | Bug | Low | Trivial | Window/form icon doesn’t scale its image. | Complete |
Hi Alex,
when you click on the JavaScript property a button to open the code editor should appear (see screenshot)

Hope that helps.
Best regards
Frank
Hi Frank,
The example works very nicely and the explanation “all events bubble unless stopped …” shows the potential of this approach.
A silly question though: how do I edit the javascript? I can see the “javascript” in the container below the control in the designer, but I haven’t found a way to open and edit it, apart from editing directly the usercontrol resources which gives a warning.
Alex
Hi Cris,
I have logged WJ-7410 and WJ-7411 for the problems with collapsing and display of tree view nodes.
Unfortunately we can´t support ShowLines, so yes, it´s by design.
Hope that helps.
Best regards
Frank
We only have two settings: default theme (optional) and the server license key. A wisej section still needs an entry to define the configuration reader class.
The handler and module setting have to be in the httpHandler, etc. Can those go in an external file?
Hi Alex,
first an answer to your question regarding the close button on MDI tabs:
You can’t handle the tabs in the tabbed mdi directly. They are wired to the relative mdi child form. The close button on the tab corresponds to the close button on the form, to remove it set form1.ControlBox = false – before setting form1.MdiParent.
For the problem of not showing the form icon in the MdiTabView I have logged WJ-7412.
Thanks,
Frank
Hi Luca,
Yes, in the generated project templates. What I had in mind was to have a specific config section in Web.config named “Wisej”, where all the Wisej-related settings would be stored, and where only Wisej would put key/value pairs (like the license). And leave the appSettings section for application settings only (like defining paths, switches, initialization parameters etc).
Alex
Hi Frank, thanks for your code, I’ll give it a go.
You are right about tot creating an event specifically for a single key. To be honest, what I thought it would be easier, was to include an AcceptButton property for the UserControl class, as you have for the Form.
Best,
Alex
Hi Alex,
I have picked up your scenario of a UserControl and created a sample that illustratres the handling of Enter and Escape keys.
When you looked at the attached file you can see a Javascript property added to the UserControl ( added to all controls where the Javascript extender has been added to the container). You can write a script directly in each control (see screenshot of the Javascript property on the user control) or reference a separate .js file.
This is a lot better than singling out a specific key and having to handle it on each textbox. It allows you to process the keys on the client at a higher level and to fire any event on any other component.

Hope that helps.
Best regards
Frank
