Insérer un composant utilisateur par code
Salut
J'ai fabriqué un composant utilisteur qui marche bien. Pour l'instant je le place dans ma page de manière classique, avec une balise @Register et une balise html de type <uc3:
Et là, tout fonctionne bien.
Maintenant je voudrais changer ça et faire cette insertion par le codeBehind. Mais dés que je fais ça il me dit que
Citation:
La référence d'objet n'est pas définie à une instance d'un objet.
Et il pointe sur une ligne du CodeBehind du composant, la première où je fais une insertion de control dans la table que j'ai déclaré en HTML dans mon composant.
Je vais mettre un peu de code pour illustrer.
Voici mon CodeBehind de ma page :
Code:
1 2 3 4 5 6 7 8
|
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim troupage As HtmlForm
troupage = Page.Controls(0).FindControl("form1")
Dim forminscrip As New jemprunte_Inscription
forminscrip.Mode = "inscription"
troupage.FindControl("cphCentral").Controls.Add(forminscrip)
End Sub |
Et le code HTML de la même page
Code:
1 2 3 4 5 6 7
|
<asp:Content ID="Content1" ContentPlaceHolderID="cphMenuGauche" Runat="Server">
<uc1:MenuGaucheGlobal ID="MenuGaucheGlobal1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphCentral" Runat="Server">
</asp:Content> |
Puis le code HTML du composant
Code:
1 2 3 4 5 6 7 8 9
|
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Inscription.ascx.vb" Inherits="jemprunte_Inscription" %>
<script type='text/javascript'>
var tbCity_ClientItemSelected = function(sender, e){ $get('<%=hfVille.ClientID %>').value = e.get_value(); }
var tbNaiss_ClientItemSelected = function(sender, e){ $get('<%=hfNaiss.ClientID %>').value = e.get_value(); }
</script>
<asp:TextBox ID="hfVille" runat="server" CssClass="invi"></asp:TextBox>
<asp:TextBox ID="hfNaiss" runat="server" CssClass="invi"></asp:TextBox>
<asp:Table ID="tblGene" runat="server"></asp:Table> |
Puis la partie du code Behind concernée par l'erreur
Code:
1 2 3 4
|
Dim ro, roErr As New TableRow
[...]
tblGene.Rows.Add(ro) |
Entre ces deux lignes, je prépare plein de truc pour remplir mes cellules de tables, mais visiblement, c'est aps ça qui le dérange, c'est latable, il la trouve pas alors qu'elle est dans le HTML.
J'ai tout de même essayé de la mettre dans le codeBehind, amis ça dvint la grosse mouise avec le reste du code et surtout le Script.
Pouvez vous m'aider ?