webForumDet fria alternativet

Hitta en Control i placeholder

.NET

4 svar · 282 visningar · startad av lucgo446

Medlem sedan aug. 2002221 inlägg
Frågan#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?

Medlem sedan aug. 2002221 inlägg
#2

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)

Medlem sedan mars 200174 inlägg
#3

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");

Medlem sedan aug. 2002221 inlägg
#4

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?

Medlem sedan sep. 20011 914 inlägg
#5

// .ascx
<%@ Control classname="MyUserControl" Language="C#" %>

// .aspx.cs
MyUserControl uc = (MyUserControl)Page.LoadControl("usercontrol.ascx");

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)