Vill skapa en FormulärFabrik som ska hantera att skapa upp både WinForm och WebForms. Som sagt fungerar för WinForms med ej för Web. det är en klass som skapar en wepForm eller winForm instans och sätter rättighter på dess kontroller. Tänkte mer på vad factory _är_ för någon rent konkret i just det här specifika fallet. Att den fungerar i scenario a men inte scenario b säger inte så där jättemycket om vad som är felet när det enda vi vet om factory är att det är en svart låda som spottar ut objekt ;) Nej det är inte lätt att veta, håller med. Funderar lite på om du gör allting som "måste göras", jag har ett förslag: Släng ihop en enkel aspx-sida, ta sedan och kör den sidan. Titta sedan temp-mappen för asp.net och leta reda på rätt dll, öppna den med reflector och titta exakt vad asp.net sätter för egenskaper och anropar för saker. Jag undrar om du inte missat någonting någonstans i den vevan? Lyckades köra denna FrameworkInitialize men det krävs även något mer verkar det som . Hej!FormulärFabrik
Tanken är att denna läser upp kontroller och dess egenskaper enligt vad som är specat i db och placerar ut dem på formuläret. Sedan retuneras instansen.
Ser inga problem med att göra denna för WinForms med går det att göra för WebForms?Sv: FormulärFabrik
Skapar en WinForm instans med användarens rättigheter.
I db har jag mina formulär och dess inställningar.
WinForm = Factory.Create("winformName",userId);
Skapar formulär med assembly.CreateInstance(...)
kontrollerar formulärets kontroller mot användaren rättigheter.
WebForm = Factory.Create("webForm.aspx",userId);
Det fungerar inte lika bra för webForms då formulärets controll collection alltid är 0 trots att det finns flera kontroller på formuläret.
Tips någon.
Sv: FormulärFabrik
rättigheter kan i detta fall vara om kontrollen skall vara synlig, readonly osv.Sv: FormulärFabrik
factory är ett design pattern , finns en förklaring till vad det är här http://en.wikipedia.org/wiki/Factory_method_patternSv:FormulärFabrik
Sv: FormulärFabrik
Det jag ville göra var att ha en central plats där jag skapade upp både windows och web forms.
Formulärens kontroller ställs in efter db konfigurationen, t e x TexBox.Visible, Språk osv.
Det som fungerarde för WinForms var att jag använde en klass som jag kallade Factory. Denna plockade in formNamn och användare objekt. Med form namn kunde jag via db utröna om det var web/win form och även info för att via reflection skapa upp detta formulär. Alltså info om varje form finns i db. Därefter hämtar jag rättigheter mha användar objektet, kontrollerar dessa inställningar mot formulärets kontroller och skickar sedan tillbaka denna instans.
Ville alltså göra liknande för WebForms. Skapa då upp två klasser till, WebFormFactory och WinFormFactory som ärver from FormFactory (döpte om Factory till detta).
WebFormFactory hanterar nu endast WebFormulär. Men då jag skapar upp min WebForm via reflection så är alltid ControlCollection tom. Kontrollerna har inte skapat än.
Har testat att invoka Page.Init med det hjälpte inte.Sv:FormulärFabrik
Sv: FormulärFabrik
Försökte hitta __BuildControlTree(default_aspx __ctrl) men den fanns ej. Det låter som att denna skulle kunna lösa mitt problem.
så här ser det ut då jag kör reflector.
<code>
public class default_aspx : _Default, IHttpHandler
{
// Fields
private static object __fileDependencies;
private static bool __initialized;
// Methods
public default_aspx();
private HtmlHead __BuildControl__control2();
private HtmlTitle __BuildControl__control3();
private HtmlForm __BuildControlform1();
private void __BuildControlTree(default_aspx __ctrl);
protected override void FrameworkInitialize();
public override int GetTypeHashCode();
public override void ProcessRequest(HttpContext context);
}
</code>Sv:FormulärFabrik
Det är inte lika lätt att dynamiskt skapa kontroller i webforms som i winforms, men det går!
Läs t.ex. den här:
HOW TO: Dynamically Create Controls in ASP.NET by Using Visual C# .NET
http://support.microsoft.com/kb/317794
Annars googla på "dynamic create control winform" eller nåt...