|
I'm going to guess that your OnLoad is clobbering the change you just made. Try putting this line at the beginning of "showMinSal" and see what happens...
if (Page.IsPostBack) return;
|
|
|
|
|
Right on dot! Thanks for your help...the initial page reads values from database. and on the autopost, it would populate the value from database again!
you guys are awesome!
|
|
|
|
|
I've run into that problem before, so it looked familiar. Glad to help.
Experience is what you get when you didn't get what you wanted. - Randy Pausch
|
|
|
|
|
Hi All,
I have a method that returns List<T>, T can be a number of types but based on the type I want set different properties.
I can detect the type passed into the method and can switch on the name but I'm a bit lost on how to convert my List<type> to list<T> so the return type is correct.
the error is Cannot implicitly convert type List<type> to List<T> which is understandable but how do I return List<type> as List<T> where T is type?
|
|
|
|
|
Well, type (in your example), must be derived from type T, so the easiest way to tell it to do this would be to put a constraint on T in your declaration, e.g.
public List<T> MyMethod<T>(Type type) where T : MyBaseType
{
}
|
|
|
|
|
Thanks Pete,
I've tried putting constraints on the method but I'm still getting the error, I think I'm doing something fundamentally wrong.
perhaps an example would help
public List<T> getall<T>()where T : employee
{
type t = typeof(T)
switch (t.name)
{
case "manager":
List<manager> all = this.GetManagers()
break;
default
List<sales> all = this.getSales()
}
return all
}
This is something along the lines of what I'm trying to do (I haven't tried compiling it but it's the types I have the issue with, not syntax)- Imagine both Sales and managers are of type employee but managers are paid monthly and do not get commission but sales are paid weekly and do get commission, so whilst they have much in common I want to treat them differently.
Hope this makes more sense.
|
|
|
|
|
You're starting to get there, but you need to cast to the appropriate list type as in:
public List<T> GetAll<T>() where T : Employee
{
List<T> all = new List<T>();
if (typeof(T) == typeof(Manager))
all = GetManagers() as List<T>;
else
all = GetSales() as List<T>;
return all;
}
|
|
|
|
|
Ah yes, got it!
Thank you very much I didn't think of casting the whole list.
Much appreciated.
Paul
|
|
|
|
|
No problems. Glad to be of service.
|
|
|
|
|
I'm curious what are you trying to achieve with a method like this. Since you are forced to specify an exact type at the point of call anyway, for example,
var managers = getall<manager>(); you might as well call a method with a different name, like this:
var managers = getAllManagers(); In other words, your getall method hides certain details, yet the caller is forced to reveal these details back! Could you please explain your intent?
|
|
|
|
|
I agree. It seems like the problem here is showing up the underlying inconsistency in what the OP is trying to do. I don't see the purpose of this method.
|
|
|
|
|
I'm sure there are a number of ways to do it, this is the scenario I have been presented with.
I have some big text files and depending on their origin will contain slightly differing sets of data.
I have regex patterns that will return a collection of matches - each match describes an object of type T, Once I have the matches I know what type T is and can process the list on this basis. 90% of the processing is the same but differs slightly based on T.
Hope that makes some sense.
|
|
|
|
|
Are you certain that you need a generic for this scenario? It sounds like a simpler List<employee> would do just fine, no?
|
|
|
|
|
I would use a List<Employee>, but instantiate the appropriate type of Employee and have some virtual methods that you can override to get the custom behaviour for each one.
|
|
|
|
|
Paul E Davies wrote: List<manager> all = this.GetManagers()
List<T> all = this.GetManagers()
|
|
|
|
|
I am using webservice in my application. Inside that I have a function to register the remoting service. Following is my code:
RegisterRemoting();
private void RegisterRemoting()
{
try
{
WellKnownClientTypeEntry entry = RemotingConfiguration.IsWellKnownClientType(typeof(IManager));
if (entry == null)
{
RemotingConfiguration.RegisterWellKnownClientType(typeof(IManager), AmortisationGeneral.GetAppSettings("RemotingService"));
Hashtable properties = new Hashtable();
properties["name"] = "HttpBinary";
properties["useDefaultCredentials"] = true;
BinaryClientFormatterSinkProvider clientFormatter = new BinaryClientFormatterSinkProvider();
HttpChannel channel = new HttpChannel(properties, clientFormatter, null);
ChannelServices.RegisterChannel(channel, false);
}
}
catch(Exception ex)
{
ex.Message.ToString();
return;
}
}
The uri is coming from an appsettings key which is as follows:
<appSettings>
<add key="RemotingService" value="http://localhost/Services/FinancialRemotingSite/eFirst.Origin.Financials.Amortisation.Manager.AmortisationManager.rem"/>
</appSettings>
When I try to test the url as specified in the value tag, I was getting the following error:
System.ArgumentNullException: No message was deserialized prior to calling the DispatchChannelSink.
Parameter name: requestMsg
Is this something that the remoting service has not been installed properly in my local system? I am using VS 2005. I have tried almost all of the solutions found in google, but didn't solve the issue. Would be great if anybody provides some help on this.
Success is the good fortune that comes from aspiration, desperation, perspiration and inspiration.
|
|
|
|
|
Hi,
Is it a good practice -
to first create a DB, then data layer and business layer and then web services that communicates between the business layer and the front end of all the different websites - like admin, corporate, product website?
The idea is to minimize the direct interaction of front end layer with the back end and instead place web services in between?
or please let me know if there is better approach(No MVC for now..)
|
|
|
|
|
I think better approach may be to go backwards to what you written. So first you create a GUI for a functionality. Then you write some logic of the GUI, that calls service, which in turn calls business layer method/methods and business layer performs operations on database.
In this approach important thing is not to implement all layers at once. First you design GUI. Because GUI is most important in the application (this is what user sees and he really doesn't care, that underneath there is super database design if GUI sucks).
When you have GUI, you can prepare some logic for it. Here you decide what services you need and create interfaces of these services. You don't implement services yet. You just create some implementation that returns constant data. When logic of GUI is completed you can start implementing services for real. Implementation of services gives you idea of what business layer should contain and you do the same with business layer as with services earlier: simple implementation without real logic.
In the end you create data access layer. And database. And they are result of what you really need, not what you think you'll need.
Don't forget to rate answer, that helped you. It will allow other people find their answers faster.
|
|
|
|
|
I quite like this backwards approach but most of the developers always say it's best to write DB first. But never mind, the problem that i can see in this architecture is -
if there is a problem in web service then all the sites go down at the same time. How can i overcome this problem? I don't think it will be a good idea to develop different web service for each websites.
|
|
|
|
|
There are arguments pro and con for both top down and bottom up methods but the only correct answer is what works for you situation, your project, your team, your goals.
Not every project requires the use of Web Services. You have to weight the costs and benefits. If the application you are building is an internal app on a single platform, then Web Services are more of a hindrance. If, on the other hand, your business logic may be used by other companies, or divisions within the company, then it may be worthwhile.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Yes, if that's what your situation calls for. I would put an API between the business layer and the Web Services though.
My general rule of software development: "Design should be top-down, but implementation should be bottom-up."
modified on Tuesday, August 2, 2011 9:13 AM
|
|
|
|
|
In my opinion you can remove the impact of the entire design choice by having a good up front design that handles all aspects you mentioned.
You talk about the technical design, but you need a functional design first. A functional design focuses on use cases, workflows etc...
EG.:
Functional: A user says he wants a dialog that holds a person's information and that has buttons to save the information, copy the information and close the dialog. He also explains what that 'information' is, in detail. (name, first name, age, etc...) The user mentions how this information is used in other parts of the application and or system or even in other applications or systems. You can give some direction to the user here like do you want to have a remote service for this? (indicating pro's and con's)
Technical: Based on the information of thze technical information you can design the application technically, will we use services, forms/wpf or web UI's? What dataobjects can we define? How many tiers do we need, etc... This can go as far as defining the SQL statements necessary and writing propotypes.
Hope this is what you wanted.
V.
|
|
|
|
|
In implementing the app, yeah. It's good.
In design mode or user talks or functionality it is the other way around.
First talk to the users, see what(functionality) they want, how they want it(technical data such as web app, win app...).
Then, after all data about the app is gathered, start with the DB. That's how I do it.
I may be wrong, but don't tell anybody.
All the best,
Dan
|
|
|
|
|
Hi experts,
there is a project called MyProject . It compiles to a file called MyProjectAssembly.exe .
Since it has to support multiple languages, there is also a resource file MyProject.resx , which contains string-typed keys and string-typed values.
I can, in code, gain access to the strings via
string translatedValue = MyProject.KeyForTranslatedValue
Now there are some strings that I don't know the keys for at compile time. Therefore I have the application process KeyForTranslatedValue and get the translated string via
string translatedValue = Properties.Resources.ResourceManager.GetString("KeyForTranslatedValue");
The mentioned Properties.Resources.ResourceManager cannot find the string and therefore returns null . It seems to be able to retrieve some other resources (numbers, icons, ...) that are language-independent and are stored in Project Explorer -> RightClick -> Properties -> Resources.
Is this normal behaviour?
Can I redirect Properties.Resources.ResourceManager to the langugage-dependent resources? Would that be stupid?
Should I use a separate ResourceManager for the language-dependent resources?
Ciao,
luker
|
|
|
|
|
The ResourceManager.GetString method has an overload that takes in the resource culture as the second parameter. You may want to experiment with that.
|
|
|
|