Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater c подсписком / 7 сообщений из 7, страница 1 из 1
21.12.2015, 15:59
    #39133318
zalsily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
Добрый день.

Подскажите, пожалуйста, как получить такого рода разметку на клиенте, используя контрол ASP:Repeater:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
                        <p>Родительская категория 1</p>
                        <ul>
                            <li>Подкатегория 11</li>
                            <li>Подкатегория 12</li>
                            <li>Подкатегория 13</li>
                        </ul>
                        <p>Родительская категория 2</p>
                        <p>Родительская категория 3</p>
                        <ul>
                            <li>Подкатегория 31</li>
                            <li>Подкатегория 32</li>
                        </ul>



Для привязки репитера есть объект List<Category> categories, а сам тип категорий:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int ParentCategoryId { get; set; } //может содержать значение больше 0, если принадлежит другой категории
        public List<Classes.Category> ChildCategories { get; set; } //список дочерних категорий

        public Category()
        {

        }
    }



Пояснения:
Репитер привязываем к объекту categories, содержащий некоторый набор объектов типа Category (для примера 3 обеъкта с полями Name: "Родительская категория 1", "Родительская категория 2", "Родительская категория 3"). Объекты "Родительская категория 1" и "Родительская категория 3" имеют списки подкатегорий, а объект "Родительская категория 2" - не имеет этого списка (его поле ChildCategories содержит значение Null).

Так вот, как строить подсписки <ul> в разметке айтемов репитера, если для привязываемого датаайтема существует внутренний список ChildCategories?

В принципе, могу в месте для генерации <ul> могу вызывать внешний метод, который в зависимости от входного параметра, генерирует разметку и вставляет её в требуемое место. Но не очень хочется генерировать разметку в файле кода. Как бы вот декларативно в самом репитере получать доступ к внутреннему полю и выводить биндером перечень его элементов (точнее его внутренних свойств, как для родительской категории)?
...
Рейтинг: 0 / 0
21.12.2015, 16:14
    #39133366
zalsily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
Всё, сделал!
...
Рейтинг: 0 / 0
21.12.2015, 16:15
    #39133377
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
zalsily, рекурсия на байндинге репитера.
...
Рейтинг: 0 / 0
21.12.2015, 16:27
    #39133410
zalsily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
Ну да, можно было подписать репитер на айтемдатабайнд и там уже шаманить, но я решил внутри айтема родительского репитера назначать дочернему репитеру датасурс через внешний метод DataSource='<%# GetSubCategories(Container.DataItem).

А сам метод не возвращает разметку, а возвращает ТОЛЬКО внутреннее свойство объекта ChildCategories.

Отлично! Разметка описана декларативно! А на лету подвязывается ТОЛЬКО датасурс.
...
Рейтинг: 0 / 0
21.12.2015, 16:29
    #39133420
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
zalsily,
Сработает, если уровень рекурсии не превышает 1. После этого будет г-код.
...
Рейтинг: 0 / 0
21.12.2015, 18:50
    #39133676
zalsily
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
Axeleron, так про рекурсию речи не идет!

В данном случае требуется вывести только первого уровня подкатегории.

Для заполнения листов объектами по-подкатегориями конечно использованы рекурсии, но для вывода конкретно в этой задаче требуется вывод только первого подуровня.
...
Рейтинг: 0 / 0
21.12.2015, 19:40
    #39133722
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Repeater c подсписком
zalsily, понятно, тогда нормально, только, если ТХ не поменяется выводить данные и второго подуровня :)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Repeater c подсписком / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]