03. maj 2003 - 15:55Der er
26 kommentarer og 1 løsning
dynamisk indsætning af user control
Hejsa
I min db har jeg file nanet på en række user controls. Jeg har også en 'show_position' værdi. Denne værdi viser i hvilken <td id="LeftPane" runat="server"></td> den skal indsættes. Jeg kan godt indsætte hvis jeg smider alle unser controls ind samme sted men ikke hvis jeg forsøger at brug denne værdi.
Her er lidt kode:
while dtrModules.read()
Dim parent As Control = Page.FindControl(dtrModules ("show_position"))
har du en kulonne i din db som hedder show_position, og sørger du for at hente den med ud i din SQL-statement? Du skal forresten heller ikke skrive Page.FindControl, men this.FindControl, hvor this referer til den side du er på, eller også skal du have fat i en reference til den side som den control du vil finde er på. Husk forresten også at skriv dtrModules("show_position").ToString(), da FindControl tager en string som input :)
cdm_kiwie>> jo, this er en c#-ting, hedder Me i vb.net, så du skal skifte Page ud med Me. LoadControl er jo ikke en static-method, men en instanse-method, dvs at den skal bruges på et object, og ikke en klasse.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 32: Line 33: Line 34: parent.Controls.Add(Page.LoadControl(dtrModules("src"))) Line 35: Line 36: parent.Controls.Add(New LiteralControl("kiss my ass"))
ja men først bestemmer jeg hvor den skal placeres og derefter indsætter jeg stien. Min user control hedder 'header.ascx', det er den værdi der står i dtrModules("src").
Dim parent As Control = Me.FindControl(dtrModules("show_position").ToString())
If (parent != null) Then Dim myControl As Control = LoadControl(dtrModules("src").ToString()) parent.Controls.Add(myControl) Else 'kontrol ikke fundet End If
Jeg har lavet min kode totalt om så den bruger class og ikke bare en datareader. Af en eller ander grund så virker det. Men hvis du laver et svar så får du de 60 point for din hjælp.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.