0

J'ai créé un contrôle utilisateur à utiliser sur un site Web. J'essaye d'ajouter ce contrôle d'utilisateur sur un clic d'un bouton. Je l'ai testé en l'ajoutant dynamiquement à la page mais rien ne s'affiche.Ajout d'un contrôle utilisateur de manière dynamique

mon fichier ascx est

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RoomsUserControl.ascx.cs" Inherits="RoomsUserControl" %> 

<table> 
<tr> 
    <td><asp:TextBox ID="txtsize" runat="server"></asp:TextBox></td> 
    <td> 
     <asp:DropDownList ID="ddlRoomType" runat="server"> 
      <asp:ListItem>Master Bedroom</asp:ListItem> 
      <asp:ListItem>Bedroom</asp:ListItem> 
      <asp:ListItem>Bathroom</asp:ListItem> 
      <asp:ListItem>Kitchen</asp:ListItem> 
      <asp:ListItem>Powder Room</asp:ListItem> 
      <asp:ListItem>Dining Room</asp:ListItem> 
      <asp:ListItem>Store Room</asp:ListItem> 
      <asp:ListItem>Walkin Closet</asp:ListItem> 
     </asp:DropDownList> 
    </td> 
    <td> 
     <asp:DropDownList id="ddlLevel" runat="server"> 
      <asp:ListItem>Basement</asp:ListItem> 
      <asp:ListItem>Ground Floor</asp:ListItem> 
      <asp:ListItem>First Floor</asp:ListItem> 
     </asp:DropDownList> 
    </td> 
    <td> 
     <asp:TextBox ID="txtFlooring" runat="server"></asp:TextBox> 
    </td> 
    <td> 
     <asp:TextBox ID="txtclosetType" runat="server"></asp:TextBox> 
    </td> 
</tr> 
</table> 

avec RoomsUserControl.ascx.cs fichier

public partial class RoomsUserControl : System.Web.UI.UserControl 
{ 

    public string RoomSize 
    { 
     get 
     { 
      return txtsize.Text; 
     } 

     set 
     { 
      txtsize.Text = value; 
     } 
    } 

    public string RoomType 
    { 
     get 
     { 
      return ddlRoomType.SelectedItem.ToString(); 
     } 

     set 
     { 
      ddlRoomType.SelectedItem.Text = value; 
     } 
    } 

    public string RoomLevel 
    { 
     get 
     { 
      return ddlLevel.SelectedItem.ToString(); 
     } 

     set 
     { 
      ddlLevel.SelectedItem.Text = value; 
     } 
    } 

    public string RoomFlooring 
    { 
     get 
     { 
      return txtFlooring.Text; 
     } 

     set 
     { 
      txtFlooring.Text = value; 
     } 
    } 

    public string RoomCloset 
    { 
     get 
     { 
      return txtclosetType.Text; 
     } 

     set 
     { 
      txtclosetType.Text = value; 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

code page de test est

protected void Page_Load(object sender, EventArgs e) 
    { 
     RoomsUserControl r1 = new RoomsUserControl(); 
     r1.ID = "Room1"; 
     pl1.Controls.Add(r1); 

     RoomsUserControl r2 = new RoomsUserControl(); 
     r2.ID = "Room2"; 
     pl1.Controls.Add(r2); 

     RoomsUserControl r3 = new RoomsUserControl(); 
     r3.ID = "Room3"; 
     pl1.Controls.Add(r3); 


    } 

Lorsque debugger PL1 du panneau contient trois usercontrols mais ne s'affiche pas sur le formulaire.

+0

http://stackoverflow.com/questions/9069347/how-to-add-user-control -on-run-time-in-asp-net –

+0

Merci bharat. Il est maintenant affiché, mais comment puis-je obtenir les valeurs de toutes les zones de texte dans ce contrôle car ils ne sont pas disponibles sur un clic d'un bouton. Comment puis-je instancier pour utiliser des moyens globaux dans toutes les méthodes. Merci. –

+0

* RoomsUserControl r1 * doit être déclaré au niveau de la classe et non dans Page_Load. Une fois que vous faites cela, ** r1 ** sera disponible dans vos événements de clic de bouton. –

Répondre

0

Vous devez changer la façon dont vous instanciez l'utilisateur comment vous devez le faire de control.Here:

protected void Page_Load(object sender, EventArgs e) 
{ 
    RoomsUserControl r1 = (RoomsUserControl)Page.LoadControl("~/RoomsUserControl.ascx"); 
    r1.ID = "Room1"; 
    pl1.Controls.Add(r1); 

    RoomsUserControl r2 = (RoomsUserControl)Page.LoadControl("~/RoomsUserControl.ascx"); 
    r2.ID = "Room2"; 
    pl1.Controls.Add(r2); 

    RoomsUserControl r3 = (RoomsUserControl)Page.LoadControl("~/RoomsUserControl.ascx"); 
    r3.ID = "Room3"; 
    pl1.Controls.Add(r3); 
} 
+0

en plus de cela dans l'événement de clic de bouton je viens de mettre le code RoomsUserControl r1 = (RoomsUserControl) pl1.findcontrol ("Room1"); et obtenez les paramètres dans l'événement click. Merci les gars. –