Ошибка доступа к вложенному повторителю в родительском событии ItemDataBound - PullRequest
0 голосов
/ 11 августа 2011

Ошибка:

«Repeater» не содержит определения «DataSource», и метод расширения «DataSource», принимающий первый аргумент типа «Repeater», не найден (отсутствует директива using или ссылка на сборку?)

Код:

 protected void rptIndicator_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater r2 = (Repeater)e.Item.FindControl("rptActivity");
        r2.DataSource = dt; //Error on this line.
        r2.DataBind();
    }

Markup:

<asp:Repeater ID="rptIndicator" runat="server" OnItemDataBound="rptIndicator_ItemDataBound">
        <ItemTemplate>
            <asp:Repeater ID="rptActivity" runat="server">
                <ItemTemplate>
                    <asp:Repeater ID="rptActivityData" runat="server"></asp:Repeater>
                </ItemTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

Не могли бы вы помочь. Почему .DataSource дает мне ошибку здесь.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Есть ли у вас другие ссылки, включающие класс Repeater в свое пространство имен?

Возможно, попробуйте привести его к System.Web.UI.WebControls.Repeater.

0 голосов
/ 11 августа 2011

Во-первых, вам нужно проверить ItemType, иначе вы вернетесь, задаваясь вопросом, почему вы получаете ошибку во время выполнения.

switch (e.Item.ItemType) {
    case ListItemType.Item:
    case ListItemType.AlternatingItem:
         Repeater r2 = (Repeater)e.Item.FindControl("rptActivity");
         r2.DataSource = dt; //Error on this line.
         r2.DataBind();
 }

Я предполагаю, что это опечатка, но ваша разметка отображает повторитель как " rptActivityData ", но в вашем коде вы ищете FindControl("rptActivity")

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