473,385 Members | 1,813 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Generic/Adoptive User Interface Design

Hi all,

I have been working on an ASP.NET application that is a kind of wizard ( a
list of sequential pages ). We built that application for the CLIENT-A and it
worked fine. After six months CLIENT-B came along and and requested the same
application but with little bit different requirements (both in terms of the
front-end and back-end processing), so we had to create a new application for
that client. Now came CLIENT-C !!!!!!

I am not into the favor of creating one more application for this client and
have been thinking about creating one generic application that will fit most
of our clients needs; I mean the application has to change the behavior based
on the client for which it has been called.

For example, CLIENT-A requires all pages to be shown in a sequence (Page1,
Page2, Page3, Last Page). CLIENT-B does not want to show Page1, rather they
want to show Page2, and the Last Page. CLIENT-C wants to show all of the
pages in the same sequence but has less data entry fields on some of the
forms!!!

Now is there a way I can implement/architect/design a generic/semi-generic
application that would change its behavior based on the client for which it
has been invoked for? any design pattern that would do the trick for this
kind of application? any insights?

Thanks in advance.

Stewart
Nov 19 '05 #1
2 1185
If your clients login, you can use the client id associated with their
userids to read a database table that defines the names of the pages
that you will redirect to. It's not very difficult to do actually. I
use this technique all the time with Intranet applications where the
users login in, and based on their roles, I display menus with lists of
pages that they can access. All pages verify that the user's role is
valid for that page, and if not bounce the user back to the login page.

So, in its simplest form, you need a database table for the users and
passwords, a table that links userids to client companies, and a table
that links client companies with pages. Then use a session variable or
a viewstate variable to pass the client id from page to page after the
client logs in.

Nov 19 '05 #2
Thanks for sharing your experience.

I do understand that and I was thinking along that direction but my
requirements are just not that simple! I know I can walk user through a bunch
of pages driven from a database table but there is more to it. Such as:

(1) Pages may have different data entry fields for each client
(2) Pages may have different data validation rules for fields for each
client (first name should be at most 50 characters for CLIENT-A but should be
40 characters for CLIENT-B, etc).
(3) Pages may have to do some "pre" and "post" processing that might be
specific for each client (For example, CLIENT-A wants Page1 to come up with
empty fields, whereas CLIENT-B wants Page1 to talk to client's web service to
fetch data and fill the fields, etc)
(4) and ofcourse user interface images and asthetic changes for each client!

that is the kind of app I am talking about here.

Any help guys?

thanks,
Stewart

"rm*******@yahoo.com" wrote:
If your clients login, you can use the client id associated with their
userids to read a database table that defines the names of the pages
that you will redirect to. It's not very difficult to do actually. I
use this technique all the time with Intranet applications where the
users login in, and based on their roles, I display menus with lists of
pages that they can access. All pages verify that the user's role is
valid for that page, and if not bounce the user back to the login page.

So, in its simplest form, you need a database table for the users and
passwords, a table that links userids to client companies, and a table
that links client companies with pages. Then use a session variable or
a viewstate variable to pass the client id from page to page after the
client logs in.

Nov 19 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Stewart Rogers | last post by:
Hi all, I have been working on an ASP.NET application that is a kind of wizard ( a list of sequential pages ). We built that application for the CLIENT-A and it worked fine. After six months...
3
by: zlst | last post by:
Many technological innovations rely upon User Interface Design to elevate their technical complexity to a usable product. Technology alone may not win user acceptance and subsequent marketability....
17
by: Andreas Huber | last post by:
What follows is a discussion of my experience with .NET generics & the ..NET framework (as implemented in the Visual Studio 2005 Beta 1), which leads to questions as to why certain things are the...
5
by: Richard Brown | last post by:
Ok, I've been looking through the .NET SDK docs and stuff. I'm wondering if you can provide a control extender that does generic validation or functionality just by dropping it on the form. For...
1
by: HC | last post by:
I've stripped down my code to barebones to demonstrate (below). I have interfaces and classes which implement them. I force my generic collection to accept only the interface type. If I create an...
2
by: Harold Howe | last post by:
Howdy all, I am getting a compiler error regarding a consrained conversion. It complains that it can't make the type conversion, even though the generic type argument inherits from the target of...
8
by: kasper.rung | last post by:
I have a problem formulating a test to see if an object is implementing a generic interface. I have the following: public interface IGeneric<T> { void Foo(); }
9
by: mps | last post by:
I want to define a class that has a generic parameter that is itself a generic class. For example, if I have a generic IQueue<Tinterface, and class A wants to make use of a generic class that...
10
by: phancey | last post by:
I'm quite new to generics. I have 2 generic classes: MyClass<Tand MyOtherClass<T>. MyClass<Thas 2 public Add methods Add(MyOtherClass<T>); Add(MyOtherClass<Wrapper<T>>); (Wrapper<Tis another...
2
by: =?Utf-8?B?Sm9obk1TeXJhc29mdA==?= | last post by:
I have a generic class defined. My "server" code wants to call methods on the generic class after I've assigned the type to it. I was trying to do this via a SELECT CASE statement but I can't...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.