Avatar billede Kim Neesgaard Seniormester
04. februar 2007 - 18:21 Der er 12 kommentarer og
1 løsning

FindControl fejler, når en .aspx side tilknyttes en MasterPage

Jeg har en .aspx side, hvor følgende kører problemløst:

For Each Item As SectionData In Sections
            Dim DropDownObj As DropDownList = CType(Me.FindControl("ddlSection" + Item.Section.ToString), DropDownList)
            If Not DropDownObj Is Nothing Then
                DropDownObj.DataValueField = "IDEval"
                DropDownObj.DataTextField = "EvalText"
                DropDownObj.DataSource = DB.Sel("SELECT IDEval, IDDropdown, EvalText " + "FROM tblEval WHERE tblEval.IDDropdown = '" + Item.Section.ToString + "'")
                DropDownObj.DataBind()
                DropDownObj.Items.Insert(0, Item.SelectText)
            End If
           
        Next

Jeg bruger den til at fylde alle dropdownbokse på siden.

Når jeg tilknytter siden til en MasterPage, kan den ikke finde sidens kontroller - er der en måde at få kontrollerne kendt på?
Avatar billede Kim Neesgaard Seniormester
05. februar 2007 - 09:47 #1
Åbenbart et generelt problem:

http://west-wind.com/WebLog/posts/5127.aspx
Avatar billede dr_chaos Nybegynder
05. februar 2007 - 12:28 #2
brug Page.Findcontrol
Avatar billede Kim Neesgaard Seniormester
05. februar 2007 - 12:44 #3
Den kan stadig ikke finde kontrollen.
Avatar billede dr_chaos Nybegynder
05. februar 2007 - 16:30 #4
My bad :(
prøv  med
Me.Master.FindControl("dincontentplaceholder").FindControl("ddlSection")
Avatar billede Kim Neesgaard Seniormester
05. februar 2007 - 21:30 #5
Det vil den heller ikke.
Avatar billede dr_chaos Nybegynder
06. februar 2007 - 10:57 #6
hvad hedder din asp:Content ?
Det er enten dens id eller id på din contentplaceholder du skal bruge.
Hvis altså din dropdownliste ligger direkte på siden.
Avatar billede Kim Neesgaard Seniormester
08. februar 2007 - 19:56 #7
Jeg har lavet en simpel og overskuelig kode, der har fejlen:

<%@ Page Language="VB" MasterPageFile="~/MP/MasterPage.master" AutoEventWireup="false" CodeFile="MedMP.aspx.vb" Inherits="MP_MedMP" title="Untitled Page" %>
<%@ MasterType virtualPath="~/MP/MasterPage.master"%>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:Content>

Partial Class MP_MedMP
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Dim x As TextBox = CType(Me.Master.FindControl("textbox1"), TextBox)
If Not x Is Nothing Then
  Response.Write("Ok")
Else
  Response.Write("Ikke Ok")
End If
End Sub
End Class
Avatar billede dr_chaos Nybegynder
08. februar 2007 - 19:58 #8
du gør jo ikke ikke det jeg skrev:
Me.Master.FindControl("ContentPlaceHolder1").FindControl("textbox1")
Avatar billede Kim Neesgaard Seniormester
09. februar 2007 - 08:28 #9
Den havde jeg prøvet først uden at få den til at virke (hvilket beklageligvis bestemt ikke fremgik), men nu har jeg prøvet igen og det virker! Hele sektionen ser sådan ud:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim x As TextBox = CType(Me.Master.FindControl("ContentPlaceHolder1").FindControl("textbox1"), TextBox)
If Not x Is Nothing Then
  Response.Write("Ok")
Else
  Response.Write("Ikke Ok")
End If
End Sub
Avatar billede Kim Neesgaard Seniormester
09. februar 2007 - 08:29 #10
Vil du give et svar?
Avatar billede dr_chaos Nybegynder
09. februar 2007 - 15:51 #11
svar :)
Avatar billede Kim Neesgaard Seniormester
09. februar 2007 - 15:55 #12
Tak for hjælpen!!
Avatar billede dr_chaos Nybegynder
09. februar 2007 - 16:02 #13
np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester