L lucgo446 Medlem sedan aug. 2002 221 inlägg Frågan 12 aug. 2004 18:51 #1 jag ska placera ut 30 Usercontroler (som jag gjort själv "usercontrol.ascx") med en for-loop.
Jag har 30 placeholder och använder
((PlaceHolder)FindControl(plats)).Controls.Add(LoadControl("usercontrol.ascx"));
Men sen vill jag tilldela ett antal parametrar till denna usercontrol.ascx.
Detta funkar inte:
((PlaceHolder)FindControl(plats)).Something = Something;
PlaceHolder innehåller inte en definition för Something
Och det stämmer ju. men...
Hur ska jag göra?
L lucgo446 Medlem sedan aug. 2002 221 inlägg Inte ens...
Control uc2 = LoadControl("usercontrol.ascx");
uc2.Something = SkickarInNonting;
((PlaceHolder)FindControl(plats)).Controls.Add(uc2);
... fungerar.....
Vad är min "usercontrol.ascx" för sorts object? (jag använder inte code behinde i detta fall)
U udden Medlem sedan mars 2001 74 inlägg första tanke (dock ganska trött)... för det första, har du en egen control med egna attribut så hittar du inte dessa om du konverterar din kontroll till en Control. ... och efter:
((PlaceHolder)FindControl(plats)).Controls.Add(LoadControl("usercontrol.ascx"));
så ser nog inte control-trädet ut enl:
((PlaceHolder)FindControl(plats)).Something = Something;
utan snarare (inkl typkonvertering):
MyUserControl myu = (MyUserControl) ((PlaceHolder)FindControl(plats)).Controls[0]; //el. vilken pos som nu gäller
myu.Something = Something;
ditt andra exempel
Control uc2 = LoadControl("usercontrol.ascx");
blir t.ex
MyControl uc2 = (MyControl)LoadControl("usercontrol.ascx");
L lucgo446 Medlem sedan aug. 2002 221 inlägg Precis udden!
Men, eftersom jag inte kör Code behinde har jag inget namn på min Control... Typ MyControl.
Jag kör all kod i ett: (detta är typ usercontrol.ascx)
<%@ Control Language="C#" %>
<script runat="server">
void Page_Load(object sender, EventArgs e){
//kod kod
}
</script>
Här kommer html m.m.
Jag haja att jag kan göra som du säger om jag har en class och NS men man definierar inget sånt här... undrar om det går?
D Dino Medlem sedan sep. 2001 1 914 inlägg // .ascx
<%@ Control classname="MyUserControl" Language="C#" %>
// .aspx.cs
MyUserControl uc = (MyUserControl)Page.LoadControl("usercontrol.ascx");