I understand that I can use Document Types to store data used in my web application. Also, I can store the Data in a SQL Database.
Suppose I have a web application for managing Medical Request in the Company Clinic. The current Database diagram looks like the following:
Currently the Clinic Web Application was developed using DNN. I was requested to make modification and I am planning to migrate it to Umbraco. I appreciate your help and support.
The largest transaction files are:
1. MedicalRequests which has about 5000 records, and
2. MedicalRequestsLineItems which has about 80,000 records.
Other files are normal look-up files.
My question is:
1. Should I use Document Types to store such data or should be in tables,
2. Do you think the correct choice is to use User Controls to develop the required functionality,
3. Is Umbraco the right choice for such application ?
If the data structure and data already exist and you're happy with it, I'd leave it in the existing database and build a user control or xslt extension to retrieve/update the data from the database.
If the data doesn't yet exist then you could do either. Line item data is probably not the 'editorial' content that umbraco is best at so I'd personally use separate tables for the data and create controls to manipulate the data directly.
That's one of the great things about umbraco... flexibility. Your content is in umbraco and yet you can easily create or consume external data. You can even build dashboard controls to administrate the external data right from within the umbraco UI if you want to.
One of the required improvments is to allow Edit/Add to be done in-place inside the GridView without the need to click "Save" or "Submit".
The person in charge of Data Entry is complaining about difficulties in entering the Lab Request Results. He wants to be able to enter the results as if he is using MS Excel. I mean, as soon as he presses the Down-Arrow or Tab-Key for example, the data will be saved.
As Doug suggests, go with a dashboard control to manage the data, or if it needs to be document centric (ie managing external data for specific documents), I'd suggest to look into building your own datatype, that will enable to edit data on a per document basis. Your biggest struggle will be the data editing... I'd look for 3rd party controls that may have this functionality built in, and if none exists (which I doubt), build your own...
Basically you'd be looking at implementing your own extension of a GridView which would bind to child nodes in Umbraco - you'd do this by writing your own custom .NET user control and then implementing it as a macro within Umbraco.
In your control, you'd then use AJAX event handling to automatically save data on events in the browser (click, keypress - if you click off a row, it auto-saves, if you tab/return to a new row, it auto-saves etc.). Umbraco already uses jQuery so you could use WebMethods to expose the ASP.NET events that jQuery could handle on the client-side - whether you do this in the admin screens or on the front-end would be entirely up to you, the approach would be much the same.
Theoretically you could use Umbraco for managing all the data as per your schema diagram, however, I'm not sure whether I'd recommend it. However someone submitted a ticket on Codeplex lately, which greatly increases DB query response times for sites with ~7500 nodes, just by adding a new index on a table, so for drastically improving the performance with handling a large amount of data, you'd be sorted.
I had exactly the same questions for a large conference booking application and decided to use document types for everything. It made reporting a bit more difficult but i found using document types gave me a really nice solution and meant i could do more in XSLT. I'd definitely use doc types again if i'm starting an app from scratch but wouldn't ditch an existing database.
I decided to go Database way. This is becuase Analytical Reporting is vital in my case, and, I do not see an easy way to do reporting by connecting to data which is stored inside Umbraco Documents.
However, the major change I made is to move the Database Objects from the DNN Framework to a Separate Database:
As a former (heavy) user of radcontrols from telerik.com i strongly recommend you to thick twice using these "premade" ajax controls.
The overhead from the radgrid was killing our userinterface, until we moved down the more "lightweight" jquery road. Not saying its the right solution for your project.
E.g. using tablesorter.com on a table with 1000 rows is no biggie.. adding textboxes to cell's shouldn be hard (maybe a tip: EnableViewState=false)
I have completed the CRUD Operaitons using EO.Web Grid Control to sync the updates from the Grid to CSLA .NET Object and finally to the Database.
I have also purchased this EO Web Grid Control, which costs US$169.00.
So far it seems very light and powerful control. I tried to investigate other controls from ExtJs and the like, but seemed that I will have to do lots of work in Javascript, and the killer factor was Support. EO Support was just perfect during the Trial Period.
My next step is to deploy all the completed work under Umbraco. I hope it will work.
Using Document Types vs. Database.
I understand that I can use Document Types to store data used in my web application. Also, I can store the Data in a SQL Database.
Suppose I have a web application for managing Medical Request in the Company Clinic. The current Database diagram looks like the following:
Currently the Clinic Web Application was developed using DNN. I was requested to make modification and I am planning to migrate it to Umbraco. I appreciate your help and support.
The largest transaction files are:
1. MedicalRequests which has about 5000 records, and
2. MedicalRequestsLineItems which has about 80,000 records.
Other files are normal look-up files.
My question is:
1. Should I use Document Types to store such data or should be in tables,
2. Do you think the correct choice is to use User Controls to develop the required functionality,
3. Is Umbraco the right choice for such application ?
Your feedback will be greatly appreciated.
Tarek.
I don't know why the image from the previous post was removed, and this is the link to the image:
http://lh5.ggpht.com/_Qhe6s0HOP8U/S170AlmYxqI/AAAAAAAAAts/cNEDXorQRes/s800/ClinicDBDiagram.JPG
If the data structure and data already exist and you're happy with it, I'd leave it in the existing database and build a user control or xslt extension to retrieve/update the data from the database.
If the data doesn't yet exist then you could do either. Line item data is probably not the 'editorial' content that umbraco is best at so I'd personally use separate tables for the data and create controls to manipulate the data directly.
That's one of the great things about umbraco... flexibility. Your content is in umbraco and yet you can easily create or consume external data. You can even build dashboard controls to administrate the external data right from within the umbraco UI if you want to.
cheers,
doug.
One of the required improvments is to allow Edit/Add to be done in-place inside the GridView without the need to click "Save" or "Submit".
The person in charge of Data Entry is complaining about difficulties in entering the Lab Request Results. He wants to be able to enter the results as if he is using MS Excel. I mean, as soon as he presses the Down-Arrow or Tab-Key for example, the data will be saved.
How I can do this in Umbraco ?
Tarek.
As Doug suggests, go with a dashboard control to manage the data, or if it needs to be document centric (ie managing external data for specific documents), I'd suggest to look into building your own datatype, that will enable to edit data on a per document basis. Your biggest struggle will be the data editing... I'd look for 3rd party controls that may have this functionality built in, and if none exists (which I doubt), build your own...
Cheers,
/Dirk
For GridView Excel-Like Editing, I found some reference here:
http://forums.asp.net/p/1522647/3664044.aspx#3664044
The question is: how easy it is to implement in Umbraco ?
Appreciate your feedback.
Tarek.
Hi tarekahf,
Basically you'd be looking at implementing your own extension of a GridView which would bind to child nodes in Umbraco - you'd do this by writing your own custom .NET user control and then implementing it as a macro within Umbraco.
In your control, you'd then use AJAX event handling to automatically save data on events in the browser (click, keypress - if you click off a row, it auto-saves, if you tab/return to a new row, it auto-saves etc.). Umbraco already uses jQuery so you could use WebMethods to expose the ASP.NET events that jQuery could handle on the client-side - whether you do this in the admin screens or on the front-end would be entirely up to you, the approach would be much the same.
Theoretically you could use Umbraco for managing all the data as per your schema diagram, however, I'm not sure whether I'd recommend it. However someone submitted a ticket on Codeplex lately, which greatly increases DB query response times for sites with ~7500 nodes, just by adding a new index on a table, so for drastically improving the performance with handling a large amount of data, you'd be sorted.
Hope this helps.
Benjamin
I had exactly the same questions for a large conference booking application and decided to use document types for everything. It made reporting a bit more difficult but i found using document types gave me a really nice solution and meant i could do more in XSLT. I'd definitely use doc types again if i'm starting an app from scratch but wouldn't ditch an existing database.
Thank you Aron Gamble for your feedback.
I knew that reporting will be an issue if you use Document Types. How did you overcome this issue ?
I think you will not be able to use for example SQL Reporting Services to create a report with dynamic features, rigth ?
Tarek.
Did you ever decide which way to go Tarek?
Rgds,
Erik
Hi Erik,
I decided to go Database way. This is becuase Analytical Reporting is vital in my case, and, I do not see an easy way to do reporting by connecting to data which is stored inside Umbraco Documents.
However, the major change I made is to move the Database Objects from the DNN Framework to a Separate Database:
Separate Database: http://bit.ly/aV6bOf
Inside DNN (old): http://bit.ly/abL2pg
Also, I removed the use of Surrogate Keys, and used natural Primary Keys instead.
In this model, I will be using:
1. CSLA Approach,
2. AjaxToolkit,
3. Reusable User Controls,
4. And finally, if approved by the management, I will deploy it under Umbraco.
Hope my plan will be successful.
Tarek.
I forgot to mention that I will be using also EssentialObjects Web Grid Control to allow Excel-Like editing of Laboratory Results.
Really interested thread! :) Thanks! /Lau
Thank you Lau for your comments.
I feel like I am doing a lot of effort ... but still need more.
Its a tough job, but I am moving, though slowly, but proofly.
Tarek.
Interesting thread..!
As a former (heavy) user of radcontrols from telerik.com i strongly recommend you to thick twice using these "premade" ajax controls.
The overhead from the radgrid was killing our userinterface, until we moved down the more "lightweight" jquery road. Not saying its the right solution for your project.
E.g. using tablesorter.com on a table with 1000 rows is no biggie.. adding textboxes to cell's shouldn be hard (maybe a tip: EnableViewState=false)
just my 2 cents.
I have completed the CRUD Operaitons using EO.Web Grid Control to sync the updates from the Grid to CSLA .NET Object and finally to the Database.
I have also purchased this EO Web Grid Control, which costs US$169.00.
So far it seems very light and powerful control. I tried to investigate other controls from ExtJs and the like, but seemed that I will have to do lots of work in Javascript, and the killer factor was Support. EO Support was just perfect during the Trial Period.
My next step is to deploy all the completed work under Umbraco. I hope it will work.
Tarek.
is working on a reply...