Как получить контрольную коллекцию, как это делает класс Table? - PullRequest
0 голосов
/ 04 декабря 2008

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

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

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

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

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

<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>

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

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

Ответы [ 4 ]

1 голос
/ 05 декабря 2008

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

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>
0 голосов
/ 05 декабря 2008

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

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

0 голосов
/ 05 декабря 2008

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

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);
        }
    }
}
0 голосов
/ 04 декабря 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...