|
 |
 Tuesday, October 21, 2003
New ASP.NET Version Switcher 1.1
I've released a new version of the ASP.NET Version Switcher which contains the following minor changes:
V1.1.0.0 (published 2003-10-17)
- Bugfix: initial display of Framework version was wrong
- Bugfix: VRoots with space in the name caused an exception (thanks to David Hartman)
- Bugfix: if only one scriptmap existed on any VRoot an exception occurred (Tom Connors)
You can download it here. Version Switcher
10/21/2003 9:55:00 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Friday, October 17, 2003
New HierarGrid version 1.5
The new HierarGrid version 1.5 contains the following features and bugfixes:
- Feature: nested HierarGrids now possibly with more than 3 levels (thanks to Matt Petteys)
- Bugfix: RowExpanded[x] = false was ignored
- Bugfix: excluded RowExpanded property from Designer's Property view
- Bugfix: changed Namespace for internal DynamicControlsPlaceholder to avoid conflicts when using both HierarGrid and DCP in one solution (thanks to Matt Bornstein)
Download here. HierarGrid
10/17/2003 2:39:39 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Tuesday, October 14, 2003
Visual Studio .NET Framework Bootstrapper Plug-in
Setup projects in Visual Studio .NET 2003 can be used to install the .NET Framework with your application, but only if you have installed the optional Visual Studio .NET Framework Bootstrapper Plug-in on your development computer. The Visual Studio .NET Framework Bootstrapper Plug-in modifies the behavior of the Setup project's Bootstrapper property to include the .NET Framework bootstrapper as well as the Windows Installer bootstrapper. The .NET Framework redistributable is then packaged with your application; when the user runs the bootstrapper setup.exe, it checks for the correct version of the .NET Framework at install time and if necessary, installs it before installing your application.
Thanks to Duncan Mackenzie for the link. .NET Framework
10/14/2003 3:43:04 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Thursday, October 09, 2003
Make Adobe Acrobat 6 Load Faster
Here's how to do it:
- Go to C:\Program Files\Adobe\Acrobat 6.0\Reader (replace the C if you installed on another drive, like I did).
- Create a new folder called plug_ins_disabled.
- Move all files from the plug_ins folder to the plug_ins_disabled folder except EWH32.api, printme.api, and search.api. There should only be these 3 files in the plug_ins folder.
- You're done.
- Darrell Norton [via Vasanth Dharmaraj]
Software
10/9/2003 11:55:24 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Saturday, September 27, 2003
Out for vacation
I am out on vacation for the next 10 days. We'll be travelling to Tenerife South and I am leaving me notebook at home. But if you notice a geek lying at the beach reading some 100 pages about a new operating system code-named "Longhorn", that's me! ;)
86° F/30° C, we are coming... Private
9/27/2003 7:48:15 PM (W. Europe Standard Time, UTC+01:00)
|
|
nGallery v1.0 Released!
That sounds pretty cool though I haven't tried it out (from Jason Alexander):
nGallery v1.0 Released!
Visit the nGallery site at http://www.ngallery.org to download!
nGallery is a FREEWARE, OPEN SOURCE implementation of a image gallery written purely in managed .NET and C#.
nGallery provides a solution to store and display your image galleries on your own Web site, as well as providing means for customizing and extending nGallery to your own personal likings. ASP.NET
9/27/2003 3:03:07 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Wednesday, September 24, 2003
New DynamicControlsPlaceholder version 1.1 and a VB.NET sample application
Due to the "issue" Ben and I have found with the CheckBoxList I've created a new version of the DynamicControlPlaceholder that excludes the CheckBoxList's child controls from being persisted.
Furthermore I've translated the simple DynamicControlPlaceholder demo application to VB.NET.
You can find all the files here.
P.S.: In case you don't know about the DCP: It is a placeholder control which you can add controls to using Placeholder.Controls.Add(myControl) and they are automatically recreated after a postback. DynamicCtrlPlh
9/24/2003 6:17:05 PM (W. Europe Standard Time, UTC+01:00)
|
|
Why the CheckBoxList always has one child control
Today Ben Feist emailed me pointing out a problem with the DynamicControlsPlaceholder (DCP) and the CheckBoxList (CBL). He always receives a "Multiple controls with the same ID" exception when putting a CBL onto the placeholder.
So I took a look at the implementation of the CheckBoxList and noticed that like the DropDownList and the RadioButtonList (RBL) it is derived from ListControl which contains a ListItemCollection. This collection implements IStateManager and is saved in ViewState. So no need for the DCP to save the single ListItems. Why does it work with the RBL but not with the CBL?
Examining the RBL I noticed that when it comes to the render phase for each ListItem a RadioButton instance is created and written to the output TextWriter directly (see RBL.RenderItem for reference). So the ListItems/RadioButtons are never contained in the Controls collection which is used by the DCP. No problem for the DCP!
However the CBL works a bit differently: In the constructor a CheckBox control is created, added to the child collection (!) and stored in the internal member controlToRepeat. In the render phase for each ListItem the controlToRepeat is modified to reflect the text and checked state and then written to the output stream.
That's the problem for the DCP. At the end of the first request, it loops over the Controls collection noticing the CheckBox and persisting it. After the postback, the CBL constructor creates a new CheckBox again and then the DCP recreation algorithm restores the "same" CheckBox (ID="0" is hardcoded). This causes the duplicate control ID exception.
I wondered why the CBL constructor creates this special CheckBox and to find out I created a MyCheckBoxList with a "this.Controls.Clear()" constructor ;) That solved the duplicate ID problem.
However, Ben pointed out that the MyCheckBoxList does not pick up the SelectedIndex and a quick look at LoadPostData and the HTML source revealed that the NamingContainer was incorrect.
To make a long story short, the CheckBox is added to the child collection so that the NamingContainer of the parent CBL is automatically prefixed to the ListItem index ("[CBLID]_0"). The RBL achieves the same thing manually in the RenderItem method (button1.ID = string.Concat(this.ClientID, "_", repeatIndex.ToString());)
Elegant but not very intuitive - I would expect to find either all ListItems in the control collection or none at all. So, if you ever wondered why the CBL always has exactly one child control no matter how many ListItems there are in your Items collection, you know now. ASP.NET
9/24/2003 6:07:43 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Tuesday, September 23, 2003
Microsoft's web strategy and Sun's take on Linux
I stumbled over two interesting articles about Microsoft's web strategy. The first one on linux universe headlined "How Netscape beat Microsoft". The bottom line (of the first half) is that while MS defeated Netscape in the browser war it couldn't stop webapps taking over classical Windows client apps. The second article "Why Microsoft's All About the Web" considers Microsoft's position slightly different but also points out: "Even so, the Internet remains a great threat to Microsoft [...]. Most of what I do could be done on a much simpler computer; no Windows required."
I'm pretty much looking forward to the PDC to learn how MS is going to regain momentum for windows apps with technologies like "ClickOnce" (no-touch deployment) and "Avalon". Thanks to Scoble for the links.
Another interesting competitive article containing an interview with Jonathan Schwartz, Sun's executive vice president for software can be found here. Thanks to Don. Technology
9/23/2003 2:21:56 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Monday, September 22, 2003
Article: Creating Custom Columns for the ASP.NET Datagrid
In case you haven't already noticed Marcie's article on custom DataGridColumns. It's worth taking a look at not only if you want to understand how the HierarGrid works. There, I created the so-called HierarColumn that acts as the container for the child templates and is filled during the ItemDataBound event.
Good job, Marcie! ASP.NET
9/22/2003 3:09:53 PM (W. Europe Standard Time, UTC+01:00)
|
|
HierarGrid: answering some user questions about the hierarchical data grid
Today I have to answer a few user questions regarding the HierarGrid. I decided to share some of the answers in this blog:
- Steve wants to know how to access controls that are stored in the child template. That's a bit of a hack currently. Maybe I will include a property in a future version of the grid. Until then you can use FindControl to get the reference:
Control c = HierarGrid1.Items[i].Cells[1].FindControl("DCP").FindControl("Panel").FindControl("Panel_[PanelID]").FindControl("ChildTemplate").FindControl("[InnerControlID]"); This code can be used inside a loop (where i is the counter).
- Another Steve asks about cross browser compatibility. I've checked the HierarGrid with Netscape 7.0 and Opera 7.11 and eveything worked except for one problem: the expanded state is not kept between postbacks. Until now I haven't stepped into this problem so I am happy about any hints you have for me.
- Darin wonders whether he has to put the HierarGrid into the GAC to be able to use it. Definitely not! You can copy the HierarGrid.dll into any directory, start the VS.NET ASP designer, click "Customize Toolbox" and browse for the DLL. VS.NET automatically adds a reference in the current project and copies the DLL into the Bin directory when pressing F5.
That's it for now. Just let me know if you have other questions. HierarGrid
9/22/2003 1:42:02 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Sunday, September 14, 2003
 Wednesday, September 10, 2003
Two excellent ASP.NET articles
For the last couple of weeks I had two MSDN article links on my desktop to read as soon as time permits. When I had two office days last week I read both of them and think that they are really excellent.
The first article by Dino Esposito is called The ASP.NET HTTP Runtime and covers the complete flow a request takes:
- coming into IIS
- handing over to the ASPNET_ISAPI extension
- passing it through named pipe to the worker process where managed code processing is taking place
- picking up a HttpApplication instance from the HttpApplicationFactory pool
- calling into ProcessRequest/ProcessRequestMain
The last chapter covers some basic aspects about dynamic compilation and the file structure in the "Temporary ASP.NET Files" folder.
I used the article as a guided Reflector tour through the down-level classes of the System.Web namespace by reading a bit and then checking what I've read in the source code (and vice versa).
The second article called Use Threads and Build Asynchronous Handlers in Your Server-Side Web Code by Fritz Onion is not directly related with the first one but picks up some learnings from it. Basically, Fritz describes the typical problem that the main executing thread is waiting for an external resource causing it to be blocked thus resulting in bad scalability. He develops an async HttpHandler that starts a separate thread which does not belong to the ASP.NET thread pool. Pretty cool is the base class he provides that can be used as a replacement for System.Web.UI.Page for individual ASPX pages.
Both articles are very much worth reading.
I am still missing one aspect of ASP.NET written down in an article: dynamic code generation from ASPX markup language to C#/VB code (PageParser etc.). Does anyone know a good article covering this topic?
ASP.NET
9/10/2003 12:15:23 AM (W. Europe Standard Time, UTC+01:00)
|
|
 Monday, September 08, 2003
Nested hierarchical grid demo using the HierarGrid 1.4
Most of the feedback emails I recieved during the last two weeks asked for guidance on using HierarGrid.TemplateDataMode=Table. This flag can be used to nest a DataGrid or another HierarGrid inside the child template.
Therefore, I extended the HierarGridDemo by another page called NestHierarGridDemo.aspx that shows how to build 3 layers of grids. You can view and download the demo here (sourcode available in VB.NET and C#). HierarGrid
9/8/2003 10:38:10 PM (W. Europe Standard Time, UTC+01:00)
|
|
New HierarGrid version 1.4
The new HierarGrid version 1.4 contains the following features and bugfixes:
- Feature: keeps rowstate (expanded/collapsed) between postbacks
- Feature: property "RowExpanded" to initially expand rows
- Bugfix: HierarColumn not added to Columns collection
- Bugfix: Exception with DataViews as DataSource and TemplateDataMode=Table
- Bugfix: When TemplateDataMode=Table and DataSet.EnforceContraints=true an exception occured
- Bugfix: Designer declaration corrected
Download here. HierarGrid
9/8/2003 10:35:14 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Monday, August 25, 2003
HierarGrid feedback and new version 1.3
I wanted to thank everybody for the nice feedback to my HierarGrid article on ASPAlliance.
I've just published a new version 1.3 that includes two minor fixes:
- a JavaScript error occurred when the ShowHeader attribute was set to false (thanks to Blaž Vrabec)
- when the TemplateDataMode attribute was set to Table and the Grid was bound to a DataSet instead of a DataTable a cast error occurred in line 319 (thanks to Johannes Rest)
Download here. If you find any other problems please let me know. HierarGrid
8/25/2003 1:28:28 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Friday, August 15, 2003
Just published first article on ASPAlliance
I've just published my first article on ASPAlliance that talks about how to use the HierarGrid.
It is a tutorial for VB.NET and C# that explains all the steps necessary to use the grid on a webpage:
- adding a DataRelation between two DataTables
- binding the DataSet to the HierarGrid
- creating the UserControls for the child data
- wiring up the TemplateSelection event
Additionally, some advanced topics like caching and showing one template for all child elements (e.g. to nest a DataGrid) are covered quickly.
You can find the article here and the source code for the HierarGrid here. Any feedback is more than welcome. HierarGrid
8/15/2003 4:07:31 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Sunday, August 10, 2003
I'll be at the PDC 2003
No to forget: I'll be at the PDC! And I am not the only one: 50 of my colleagues from MS Services Germany will attend the show. I'll arrive in LA on Thursday, 23rd and return to Munich on Friday 31st. Let me know if you are coming earlier, maybe we can take a dring together.
PDC 2003
8/10/2003 6:14:40 PM (W. Europe Standard Time, UTC+01:00)
|
|
I'll be back
I haven't been blogging for a while due to several reasons:
-
Our project is in the final stages of development and piloting has already started
which was quite team-consuming in the beginning
-
I've moved from a small village outside of Munich to the city (Schwabing). From the
new appartment it is only 10 min. to the "Englischer Garten" park by bike and even
shorter to the swimming pool - best you can do at this temperatures.
-
I've been playing around with Whidbey Alpha (especially ASP.NET) and Longhorn
a bit - all not public yet => come to the PDC
-
I've prepared my first article on ASPAlliance to
be published pretty soon
General
8/10/2003 6:08:51 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Wednesday, June 04, 2003
ASP.NET Version Switcher 1.0
The ASP.NET Version Switcher is a little utility that can be used to quickly switch the .NET Framework version that the ASPX pages are compiled against. This is helpful for developers who often have to test their web applications for compatibility with different version of the .NET Framework.
Internally, it uses the command line tool called ASPNET_REGIIS that is included in the Microsoft.NET Framework.
Additional features: - toggle if only selected vroot should be version switched or child vroots recursively (-s or -sn command line parameter) - double click on node opens explorer in respective directory - quick link to IIS Manager
Download (V1.0): ASPNETVersionSwitcher.exe
If you have any questions or comments please let me know. Version Switcher
6/4/2003 5:06:34 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Thursday, May 29, 2003
Restaurant recommendation for Lisbon, Portugal
Recently we have been on a short trip to Lisbon, Portugal from which we have taken two really good restaurant recommendations back home.
Lisbon is famous for its excellent sea food but as I don't enjoy fish too much we were looking out for some steaks.
The first evening we found a very nice and stylish restaurant in Bairro Alto called Sul (Rua do Norte 13) which served steaks on the hot stone - very delicious.
The second evening we went to a place called Kais (Rua da Cintura) which is located at the docks in an old factory building. But inside everything was styled very elegantly and the food was excellent as well.
If you go to any of these two, let me know if you liked it as much as we did. Travel
5/29/2003 8:01:17 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Monday, May 19, 2003
Performance of my Server Sorry for the poor performance. My web server is moving from the old network center to a new one. Meanwhile I moved my homepage to an old desktop PC under my desk (128 MB RAM). I hope this will be fixed pretty soon.General
5/19/2003 6:27:06 PM (W. Europe Standard Time, UTC+01:00)
|
|
 Monday, April 28, 2003
Welcome to my new Weblog
Meanwhile, everybody seems to be blogging. So I may not be missing ;)
General
4/28/2003 5:22:37 PM (W. Europe Standard Time, UTC+01:00)
|
|
|
|
Blogroll
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|
| 28 | 29 | 30 | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 18 | | 19 | 20 | 21 | 22 | 23 | 24 | 25 | | 26 | 27 | 28 | 29 | 30 | 31 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| |
|
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent
my employer's view in anyway.
© Copyright 2008, Denis Bauer
|