Author |
Topic |
SamC
White Water Yakist
3467 Posts |
Posted - 2004-07-27 : 07:01:57
|
I'm rewriting a website navigation system and need a horizontal drop-down (ASP/ JavaScript based) menu component that will dynamically build each user's menu. An SQL query will return the user's menu list in a recordset. I need an ASP component that will build the menu list based on the return recordset.This is about controlling access to certain reports. There will be a form page where administrators can assign the menus each user will see in each menu drop-down. Does anyone know a good off-the-shelf menu product out there that has similar characteristics? Thanks, Sam |
|
Merkin
Funky Drop Bear Fearing SQL Dude!
4970 Posts |
Posted - 2004-07-27 : 07:24:51
|
I don't know anything off the shelf, but you can probably use something from www.dynamicdrive.com and asp-ify it.Damian |
|
|
Kristen
Test
22859 Posts |
Posted - 2004-07-27 : 14:16:03
|
We built our own (although we don't do drop-down, because it tends to look messy as the user passes their mouse over it, rather than onto it).Basically we return a conventional recordset and use CSS to apply the look & feel. So if the client wants buttons we use CSS buttons; if they want tabs we use CSS for background images for the left/right edges of the TAB, and the background colour for the ON and OFF tabs.Some of this information is in the recordset as "hints" to the ASP as to what to do - for example, which Tab/Button is "on" and which is "off".So the ASP stuff just makes a <TABLE> with the appropriate CSS.So if we add another "page" into the database the menus automatically incorporate it.We then cache the result - so the whole <TABLE>...</TABLE> is cached with the User Role the user has assigned (some ASP security stuff we built to group user logons into Roles - but the User Logon ID would do), and the SProc that returns the menu stuff just does a SELECT * FROM CacheTable WHERE UsreRole = 'FOO'and if it gets 0 rows then it goes on to do the real query (and ASP then does the formatting and INSERT into the CacheTable).We do have to delete the CacheTable whenever we change the menus, but we figure that even if storing in the cache is a per-user deal the need to put the menu on loads of pages benefits from caching.But with a per-user caching basis you'd need some sort of scheduled clear-down routine.Perhaps I should write a blog article ... Kristen |
|
|
timmy
Master Smack Fu Yak Hacker
1242 Posts |
|
Seventhnight
Master Smack Fu Yak Hacker
2878 Posts |
Posted - 2004-07-27 : 23:49:22
|
I always liked quark's menu... I asp-ified it one time... I could find it if you want...Corey |
|
|
JeffHurley
Starting Member
3 Posts |
Posted - 2004-07-28 : 03:10:12
|
I used the CoolMenus from [url]www.dhtmlcentral.com[/url]. I modified their example for a database driven one. I have implemented it on several websites including [url]www.dandmequilts.com[/url], and [url]www.englishthrough.com[/url]. The menus are easy to configure and customize.Thank You Jeff Hurley |
|
|
SamC
White Water Yakist
3467 Posts |
Posted - 2004-07-28 : 09:34:16
|
Thank you everyone. I've got a lot to choose from. The dynamic drive site is very cool, and has a lot of interesting material to choose from. However, my personal preference would be to find a solution that doesn't rely on JavaScript. I figure if I'm doing server-side ASP for all the forms, I may as well do ASP menus. It's one less new environment for me to debug.Quark's menu seems to be completely server side.There's a lot out there about building menu lists using nested HTML <LI> lists, and styling with CSS accordingly for hover effects and drop-down too. I'm reading up on that and plotting a possible build it myself strategy.Designing the data structure and that of the returned recordset is surprisingly not-obvious. I've had to return a lot more data than expected...MenuLevel, MenuOrder, MenuText, MenuURL, MenuTitle, MAXMenuOrderWhere Level is 1 for base menu items, 2 for a drop-down off of 1, etc. Order provides sequencing so the order does not need to be alphabetic. Title is optional for Title="" text in the link. MAXMenuOrder provides "this row" information so we know we're at the end of htis Level...I'd like to see another solution to this if anyone has one to share openly. It may save me from hitting an unexpected wall.Sam |
|
|
joldham
Wiseass Yak Posting Master
300 Posts |
Posted - 2004-07-29 : 22:16:47
|
Sam,I haven't checked, but www.solpart.com has an ASP.net menu if you need it. I know you said ASP and I am not sure if the Solpart menu would work in ASP, but it is worth a look.Jeremy W. Oldham |
|
|
ValterBorges
Master Smack Fu Yak Hacker
1429 Posts |
Posted - 2004-07-29 : 23:04:37
|
www.infragistics.com |
|
|
SamC
White Water Yakist
3467 Posts |
|
ehorn
Master Smack Fu Yak Hacker
1632 Posts |
Posted - 2004-07-30 : 14:33:29
|
quote: Originally posted by joldham I haven't checked, but www.solpart.com has an ASP.net menu if you need it. I know you said ASP and I am not sure if the Solpart menu would work in ASP, but it is worth a look.
Component Art makes some nice .NET controls too:http://www.componentart.com/aspnetmenu/default.aspxSam,Are you thinking of migrating to .NET any time soon?? |
|
|
SamC
White Water Yakist
3467 Posts |
Posted - 2004-07-30 : 14:45:07
|
Ahh Grasshopper ;-)I'm in the tarpit of ASP here but the call of the .NET Sirens are tempting: Sam! Leave ASP behind! Come and experience the depth and breth of .NET!I'd like to have a .NET shell/ template to wrap several reports based on SQL Reporting Services and a few custom .NET forms. It'd take about 2 months to rewrite I 'spect, but my job keeps getting in the way. |
|
|
ehorn
Master Smack Fu Yak Hacker
1632 Posts |
Posted - 2004-07-30 : 15:02:05
|
quote: Originally posted by SamC ... but my job keeps getting in the way.
I hear you! A much easier proposition when developing new systems. We had an opportunity with some new systems and all that did was spoil us. The learning curve is not great for an ASP programmer w/OOAD experience. Spent a few weeks living over at http://www.ASP.NET , which is a great resource.If/when you can, listen to those ".NET Sirens" :) |
|
|
|