none
Как динамически создать ListView RRS feed

  • Вопрос

  • Здравствуйте, дайте пинок

    Никак не могу начать думать - с какого конца начать.
    Есть ListView - он заполняется из базы значениями.
    Может быть два разных запроса к базе (варианта заполнения ListView)
    Поэтому заранее не известно - каким размером он будет обладать.

    Подскажите - как его лучше заполнить, генерируя самому разметку.

    16 апреля 2012 г. 10:33

Ответы

  • "но проблема в том, что текст в заголовке грида нужно развернуть на 90 градусов." - если текст не меняется часто, можно сделать его рисунком .gif или .png, это кроссбраузерное решение. Можно использовать CSS хаки, на большинстве браузеров работать будет.

    .rotclass
    { 
    -moz-transform:rotate(7.5deg); /* Firefox 3.5+ */ -o-transform:rotate(7.5deg); /* Opera 10.5 */ 
    -webkit-transform:rotate(7.5deg); /* Saf3.1+, Chrome */ filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083); /* IE6 - IE7 */ 
    -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083)"; /* IE8 */ 
    }

    Но повёрнутый текст не очень удобно читать, можете, как вариант, сделать его вертикальным.

    16 апреля 2012 г. 15:39
    Модератор
  • ListView - элемент управления основанный исключительно на шаблонах, он создан для генерирования определённой Вами разметки. Основное преимущество его, это гибкость, т.е. генерация чего-либо повторяющегося определённого Вами при помощи шаблона. Сам по себе он не генерирует разметку без данных, нет данных - нет разметки. Говоря простым языком он генерируетодин шаблон в цикле - столько раз, сколько данных в источнике.

    "И не совсем понятно - можно хоть что биндить...." - в принципе да, у него нет разметки, генерирует то что определено в шаблоне.

    • Помечено в качестве ответа ansi_str 16 апреля 2012 г. 18:15
    16 апреля 2012 г. 18:09
    Модератор

Все ответы

  • Если варианты заполнения совсем разные - то лучше сделать два разных ListView, и показывать только один из них.
    16 апреля 2012 г. 11:20
  • Нет - нужен один для разных вариантов запроса из БД

    В том то и штука, что были бы 2 всё -  было бы просто
    • Изменено ansi_str 16 апреля 2012 г. 11:28
    16 апреля 2012 г. 11:27
  • Вот посмотрите, тут и тут. Вообще генерировать динамически элемент, такой как ListView не очень хорошая идея. Т.к. ASP.NET WebForm, это один большой набор абстракций, и придётся иметь дело с постбеками и аргументами событий. Можете использовать шаблоны в ListView, они как раз для этого и реализованы. А если и это Вам не подходит, то высше предложенный вариант думаю наиболее лучшее решение.
    • Изменено YatajgaEditor 16 апреля 2012 г. 11:38 Опечатки
    16 апреля 2012 г. 11:36
    Модератор
  • Задача такая - нужно сделать что то типа журанала - верхняя строка(заголовок) будут фамилии сторудников - правая калонка - нахвания страниц. А на пересечении будут находится чекбоксы. Если у чекбокс выбран - то сотрудника не допускают к данной странице, если нет - то допускают. Я всё сделал на Гриде - всё прекрасно работает, но проблема в том, что текст в заголовке грида нужно развернуть на 90 градусов. Вот тут то т и началось....Дееь искал кроссбраузерное решение повората текста - его не нашёл и через CSS и через плагины JQuery - всё коряво получается. Пришлось выбрать вместо Грида ListView...

    При чём есть два различных варианта заполнения контрола - они отличаются только количеством ячеек в левой колонке и соответсвенно чекбоксами - true или false

    Спасибо, сейчас посмотрю ссылки
    16 апреля 2012 г. 13:56
  • "но проблема в том, что текст в заголовке грида нужно развернуть на 90 градусов." - если текст не меняется часто, можно сделать его рисунком .gif или .png, это кроссбраузерное решение. Можно использовать CSS хаки, на большинстве браузеров работать будет.

    .rotclass
    { 
    -moz-transform:rotate(7.5deg); /* Firefox 3.5+ */ -o-transform:rotate(7.5deg); /* Opera 10.5 */ 
    -webkit-transform:rotate(7.5deg); /* Saf3.1+, Chrome */ filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083); /* IE6 - IE7 */ 
    -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083)"; /* IE8 */ 
    }

    Но повёрнутый текст не очень удобно читать, можете, как вариант, сделать его вертикальным.

    16 апреля 2012 г. 15:39
    Модератор
  • Картинка - не вариант. Что то поменяется в базе и нужно будет менять всё.

    Проблема в том, что Grid - это таблица. Я привязвыаю текст к заголовку таблицы. То есть текст находится внутри th. И кроме проблемы с поворотом в некоторых браузерах, есть проблема как с шириной самого заголовка, так и с переносом текста из-за того, что текст находится не в блоке (div), а внутри th, для него браузеры как то криво косо всё делают :(
    16 апреля 2012 г. 15:49
  • Картинка - не вариант. Что то поменяется в базе и нужно будет менять всё.

    Проблема в том, что Grid - это таблица. Я привязвыаю текст к заголовку таблицы. То есть текст находится внутри th. И кроме проблемы с поворотом в некоторых браузерах, есть проблема как с шириной самого заголовка, так и с переносом текста из-за того, что текст находится не в блоке (div), а внутри th, для него браузеры как то криво косо всё делают :(
    Как то более менее разобрался с генерированием.
    Но не совсем понимаю - почему сделали разработчики ListView - что разметка генерируется только после ListView.DataBound()
    То есть приходится биндить - и либо потом добалять, либо в во время ItemDataBound добавлять.
    И не совсем понятно - можно хоть что биндить....
    16 апреля 2012 г. 17:29
  • ListView - элемент управления основанный исключительно на шаблонах, он создан для генерирования определённой Вами разметки. Основное преимущество его, это гибкость, т.е. генерация чего-либо повторяющегося определённого Вами при помощи шаблона. Сам по себе он не генерирует разметку без данных, нет данных - нет разметки. Говоря простым языком он генерируетодин шаблон в цикле - столько раз, сколько данных в источнике.

    "И не совсем понятно - можно хоть что биндить...." - в принципе да, у него нет разметки, генерирует то что определено в шаблоне.

    • Помечено в качестве ответа ansi_str 16 апреля 2012 г. 18:15
    16 апреля 2012 г. 18:09
    Модератор