Pull to refresh

Comments 50

Вы уж извините за придирку, но красивые кавычки в коде это жесть.
Это хабра-парсер постарался :)
может быть, все исходники давать как аттач, а не текст?
общих исходников нет, специально верстать целый проект — нет времени
пока так
Баги:
Нажимаем «развернуть».
сортируем по номеру.

Видим то, что развёрнутая строчка зависит от её индекса, а не от каких-то других данных.
вы правы, но надо заметить, что этот баг, к счастью, не распространяется на материалы статьи, а присутствует только в конкретно моем решении, которое, можно реализовать лучше, при случае я и сам постараюсь этот баг исправить
Интересная статья получилась,
хотел бы почитать подобную но с описанием того как вы работаете с ajax при использовании стандартных элементов управления.
это тема большая, я даже не знаю как к ней подступиться, на такие темы книги пишут, есть правда один ответ который умещается водно слово «UpdatePanel», но чувствую вы не об этом спрашивали, в последнее время часть ajax-функционала я стараюсь перекладывать на плечи jQuery
а почему отказываетесь от ASP.NET Ajax? написание собственных дополнений?
местами ajax — громоздкий, например в сочетании с ajaxcontroltoolkit
и я не отказываюсь полностью, только вношу разнообразие
имеется в виду ajax.net, конечно
Используй его как просто JS библиотеку и меньше всяких UpdatePanel.
MicrosoftAjax.js весит 89kb. Не так уж и много :)
Можно только представить, насколько данное решение буде кроссбраузерным…
все приведенное тестировалось на IE 7.0, FF 2.0.0.14, FF 3.0.1, Opera 9.50
Как обстоят дела с Safary?
у меня его нет, если вы будете так добры и вышлите на мой адрес найденные при работе в этом браузере ошибки я бы с радостью постарался что-нибудь исправить
Извените, ошибся в прошлом комментарии.
Конечно речь шла о safarI
Бесплатную версию для Windows можно скачать по ссылке www.apple.com/safari/download/
UFO just landed and posted this here
Видно, что вы не работаете с ASP.NET :)

Данный элемент управления дает большую гибкость в результирующем HTML коде, чет тот же GridView, поэтому будет работать настолько хорошо, насколько напишете.
Отличная статья — давно хотел узнать, что нового в .Net Framework 3.5 для ASP.Net.
А еще из нового это DataPager и синтаксис, а остальное все то же самое
Статья интересная, скажем так, пробежались обзором по самому вкусному.

Но сталкиваясь с более простыми задачами, начинал разочаровываться в GridView и ListView.
А с какими именно? Я с ними достаточно много работал, может буду чем-то полезен.
Больше конечно пока использую GridView. Для меня ListView ещё в стандартную схему работы не вошел :) Но в нескольких местах его уже использовал.
В конечном html GridView и ListView выодиться как table или много span'ов вложенные в один span. Когда делал новости, в каждом элементе присутствовало изображение 170x140, вариант с таблицей отпал, так как пока контет таблицы не загрузиться? браузер не отобразит таблицу, что не очень скажем правильно. Отображение span'ами, верстать не удобно. Идеальным вариантом было бы отображение div'ами вложенными в div. GridView или ListView с такой задачей не справятся. И на помощь приходит менее «навёрнутый» элемент Repeater в связке с DataPager.
Вы не правы, ListView позволяет вам генерировать любую разметку, хоть через ul и li, решение через div, само собой так же возможно
Да, каюсь, ошибся.
ListView имеет 5 видов отображения:
1)Grid (обычная таблица).
2)Tiled (таблица с вложенными span)
3)Bulleted List (ul -> li)
4)Flow (в div вставлены span'ы и br)
5)Single Row (таблица с одной строкой)
Для описанной выше задачи болие-менее может подойти Flow. Но дивов я не получу, пока не изменю ItemTemplate и LayoutTemplate.(из кода это делать не удобно)
И, у меня возник такой вопрос, пок рассматривал генерируемый html, как можно задать формат ID. Просто не очень красивые получаться ListView1_ctrl0_ProductIDLabel
А я уже пример начал писать :)
Там все основано на шаблонах, поэтому гибкость очень большая.

Касательно ID — это известная проблема серверных контролов. А вам этот Label действительно серверным нужно делать? может можно обойтись таким образом:

<span id="yourId"><%# Eval("Id")%></span>
Мне это нужно для работы в javascript'е. А пример был взят первый попавшийся.
Сотрудник, показал интересный способ, передачи сгенерированного ID в скрипт.
<%= ASPControl.ClientID %>
Я понял. Просто ещё могу посоветовать использовать просто <span> с нужным id вместо контрола Label. Как минимум быстрее работать будет.
Из кода это делать очень удобно
id переделать не получится, следует называть вложенные элементы как можно более короткими именами, например вместо DataPager1 — dp
ну как сами по себе GridView и ListView тяжелые элементы. а репитер как бы более примитивный (отображение приходиться формировать ручками)
в кук буках вроде так и говориться когда вам нужно отображать быстро и просто используйте гридвью, а если чтото нестандартное то репитер.
А какого года Ваши кукбуки?
И почему гридвью и листвью на одной полочке по весу?
Используйте в шаблонах односторонее связывание (Eval вместо Bind), и будет Вам листвью не тяжелее репитера.
Ознакомился.
Взгляд у автора на аватарке больно стрёмный, но написано толково :)

Думаю, корень спора в этой ветке и ниже в том, что Вам больше нравится листвью расценивать как гридвью с более гибким оформлением, а мне — как репитер с более обширным функционалом.

Вы как считаете: лифтбэк — это седан с механизмом багажника от хэтчбэка? Или это хэтчбэк с формой багажника от седана?: )
скажите лучше чего нет в listview такого что есть в gridview
AutoGenerateColumns
Оно, конечно, не комильфо, но иногда нужно в четверть пинка поднять интерфейс для таблицы, а на пол-пинка времени нет.
Конечно, есть Astoria — ей только базу скормить, она уже нагенерит будь здоров.
Несколько сменились приоритеты — есть мощные Data Services, которым и программист не нужен, а есть гибкий и мощный ListView — но ему, будьте добры, опишите как и что.

Так что все-таки не всю гридовью область ListView покрывает.
это все положительные отличия?
But unlike the GridView, the ListView doesn't support a field based model for creating quick and easy grids with a minimum of markup.

Возможность в течении одной минуты сделать CRUD интерфейс для таблицы это большое отличие.

Вы прокомментируете?
пишите уж полностью, а не вырывайте из контекста: «
The ListView is an extremely flexible data-bound control that renders its content based on the templates you define. Unlike the Repeater, the ListView adds higher level features such as selection and editing, which work in the same way as those in the GridView. But unlike the GridView, the ListView does’t support a field based model for creating quick and easy grids with a minimum of markup.

ListView is a new addition in ASP.NET 3.5. ListView can literally replace all other data binding controls in ASP.NET. ListView control makes data binding easier than previous controls. It has included styling with CSS, flexible pagination, and sorting, inserting, deleting, and updating features.»

Что тут комментировать, хотел бы я знать как быстро вы сделаете букву «С» из CRUD для gridview. Я не знаю смотрели ли вы вообще на ListView, потому что похоже что нет. Так как через дизайнер с listview можно сделать все тоже что и с gridview. Это если вас так интересует какая-то пустая таблица которую надо быстро создать.
Смотрел и использую.
Для более простых задач ListView, для сложных отчетов — DevExpress ASPxGridView.

Однако, не видел раньше, что вижуал студио через визард может нагенерить страницу хтмла для Листвью — функционал аналогичный гриду и местами превосходящий, признаю. Хоть это и особенность среды, а не контрола.

В приведенной Вами цитате сказано, что ListView может заменить все остальные data-binding контролы. С этим я абсолютно согласен.
Но «официальная замена GridView» — ИМХО передергивание. Тогда и «официальная замена Repeater», и «официальная замена DataList». Хотя и не замена — эволюция всех этих контролов вместе взятых.

В остальном я с Вами согласен.
хорошо, я в свою очередь признаю, что слово «официальная» не совсем корректно в употребленном контексте
извините, никто не подскажет, как в избранное топик засунуть? нигде не вижу ссылки :(
сразу после поста перед комментами. значек звездочки есть ;)
насколько я понял с кукбука по асп листвью не является полной заменой гридвью, а лишь является более упрощенным и быстрее работающим вариантом, соответсвенно с меньшим функционалом, например как вы заметили автосортировки столбцов.
там так же пишется что наиболее быстродействующим является репитер, но у него нет никаких настроек отображения, все нужно делать самому.
в общем инструменты разного уровня сложности и гибкости, для одной цели
ListView — это эволюция контрола Repeater. На соревнования с GridView он не претендует.
вы ошибаетесь
listview — это официальная замена устаревшему gridview, которая пришла с эпохой Linq.
Ой ли официальная?
В МСДН пишут: The ListView control displays data in a format that you define by using templates and styles. It is useful for data in any repeating structure, similar to the DataList and Repeater controls.

Во всей статье ни разу не упоминается GridView, зато постоянно similar to the DataList and Repeater controls.

Как по мне — так никакая это не замена, тем более официальная. Новый контрол, где-то посерединке между предыдущими. По духу ИМХО ближе к репитеру.
А эволюцией репитера его, если не ошибаюсь, Джо Стагнер в видеоуроке называл.
официальная потому что от микрософт
замена не явная, конечно, но замена
потому что практически полностью повторяет функционал gridview и вы сейчас не найдете ни одного современного примера с gridview
на всех сайтах используется listview

к тому же listview с помощью DataPager и linqdatasource выбирает только те данные которые необходимы для отображения страницы
Sign up to leave a comment.

Articles