2016-03-28 7 views
0

Это мой ребенок страница внутри главной страницы:Добавление пользовательского элемента управления в элемент управления Panel не удается

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="doctoryab_shokri.Default" masterpagefile="~/web.Master" %> 
<asp:Content ID="my_content" runat="server" contentplaceholderid="ContentPlaceHolder1"> 
<asp:Panel ID="pnl_controls" runat="server"> 
</asp:Panel> 
</asp:Content> 

И это код позади этой страницы:

public partial class Default : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     pnl_controls.Controls.Add(new sections.doctor_holder()); 
     //sectios is a folder and doctor_holder is the user control 
    } 
    protected void Page_Init(object sender, EventArgs e) 
    { 

     pnl_controls.Controls.Add(new sections.doctor_holder()); 
     //sectios is a folder and doctor_holder is the user control 
    } 
} 

Я стараюсь, чтобы добавить этот пользовательский элемент управления для моей панели, но ничего не загружено. Я не могу использовать метод LoadControl, потому что перед загрузкой мне нужно установить свойство для пользовательского контроля.

ДОБАВЛЕНО:

Это doctor_holder.cs:

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

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

И это пользовательский код управления HTML:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="doctor-holder.ascx.cs" Inherits="doctoryab_shokri.sections.doctor_holder" %> 
<div class="doc-holder col-md-6"> 
<div class="doc-img"> 
    <asp:Image ID="img_doc_avatar" runat="server" Height="64px" Width="64px" ImageUrl="~/img/opt-doc-logo.png" /> 
</div> 
     <div class="doc-info"> 
      <p class="doc-name"> 
       <asp:Label ID="lbl_name_lname" runat="server" Text="#" CssClass="doc-name"></asp:Label> 
      </p> 
      <p class="doc-pro"> 
       <asp:Label ID="lbl_proff" runat="server" Text="#"></asp:Label> 
      </p> 
      <p class="doc-addr"> 
       <asp:Label ID="lbl_address" runat="server" Text="#"></asp:Label> 
      </p> 
      <div style="float:left;"> 
       <p class="nobat-cap">امکان ثبت نوبت</p> 
       <p class="nobat-type"> 
        <asp:LinkButton ID="lnk_type" runat="server" ForeColor="White">#</asp:LinkButton> 
       </p> 
      </div> 
      <br style="clear: both;"> 
     </div> 

+0

Вы можете включать код для 'sections.doctor_holder'? – CodingGorilla

+1

Вы должны использовать событие Page_Init, чтобы инициализировать пользовательский элемент управления и добавить его в pnl_controls. –

+0

@NiranjanKala В моем коде отсутствует событие____nit –

ответ

2

Вы можете напрямую загрузить контроля за использованием например, вы используете LoadControl me ThOD. Метод LoadControl считывает файл и создает его как элемент управления, который можно добавить на страницу.
Пример:

<%@ Page Language="C#" %> 
<%@ Reference Control="~/Controls/Spinner.ascx" %>  
<script runat="server"> 
private ASP.Spinner Spinner1 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Spinner1 = (ASP.Spinner)LoadControl("~/Controls/Spinner.ascx"); 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    PlaceHolder1.Controls.Add(Spinner1); 
} 
</script> 

См ссылки ниже:
How to: Create Instances of ASP.NET User Controls Programmatically
Dynamic Loading of ASP.NET User Controls

Надеется, что это поможет ..

+0

Блестящий! Это решило мою проблему. Спасибо. Не могли бы вы ответить на мой вопрос? : D –

+0

Kala Что такое директива управления refrence? –

+0

Я имею в виду <% @ Refrence Control = "..."%> –

Смежные вопросы