2008-12-04 2 views
0

Как захватить элементы управления внутри тега UserControl?Как захватить контрольную коллекцию, как класс Table?

Так что, если это на странице:

<ME:NewControl ID="tblCustomList" runat="server"> 
// ... these controls will be used in my UserControl.aspx 
</ME:NewControl> 

Как получить доступ те элементы управления в моем UserControl?

Например, класс Таблица делает это:

<asp:Table ID="tblNormal" runat="server"> 
    <asp:TableRow> 
     <asp:TableCell>Thing 1</asp:TableCell> 
     <asp:TableCell>Thing 2</asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

Я получаю ошибку говоря мой UserControl «не имеет открытое свойство с именем„TableRow“, когда я делаю это:

<ME:NewControl ID="tblCustomList" runat="server"> 
    <asp:TableRow> 
     <asp:TableCell>Thing 1</asp:TableCell> 
     <asp:TableCell>Thing 2</asp:TableCell> 
    </asp:TableRow> 
</ME:NewControl> 

this sample я нашел, чтобы помочь расширить класс таблицы, но это не точно, что я хочу сделать.

Я также нашел this description как использовать Templated Controls, который я не уверен, могу ли я использовать.

+0

Я не понимаю вопрос. Вы хотите, чтобы под вашим контролем пользователя могли добавлять строки? Или найти строки, которые были добавлены? – 2008-12-04 17:17:13

+0

Возможно, я должен переработать вопрос: я хочу, чтобы строки, которые я добавлял между тегами UserControl выше, чтобы вставить внутри UserControl ниже - это имеет смысл? – 2008-12-04 17:27:17

ответ

0

Я не уверен, что я понял вопрос 100%.

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

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

У меня нет образца кода здесь, но я сделал это много раз.

0

Я не уверен, что понимаю ваш вопрос.

Вы можете получить доступ к серверу на стороне управления, просто используя tblCustomList.Controls, а затем вы можете выполнить цикл и добавить в свой пользовательский контроль. Но опять же, я не уверен, что вы спрашиваете.

0

sample, на которое вы ссылаетесь, похоже, является тем, что вы пытаетесь выполнить.
Вы добавили следующие код в код?

using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Security.Permissions; 

namespace Samples.AspNet.CS.Controls 
{ 
    [AspNetHostingPermission(SecurityAction.Demand, 
     Level = AspNetHostingPermissionLevel.Minimal)] 
    public sealed class CustomTableCreateControlCollection : Table 
    { 
     protected override ControlCollection CreateControlCollection() 
     { 
      // Return a new ControlCollection 
      return new ControlCollection(this); 
     } 
    } 
} 
1

Оказывается, мне просто нужно было что-то вроде этого:

public TableRow DTHeader { get; set; } 

protected override void OnInit(EventArgs e) 
{ 
    tblCollection.Rows.Add(DTHeader); 
    base.OnInit(e); 
} 

И затем использовать это на моей странице:

<ME:NewControl ID="tblCustomList" runat="server"> 
    <DTHeader> 
     <asp:TableCell></asp:TableCell> 
     //... 
    </DTHeader> 
</ME:NewControl> 
Смежные вопросы