Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






ASP.NET - использование Repeater с ObjectDataSource для вывода статей



Элемент Repeater очень удобен в случае необходимости вывода на страницу несколько однотипных блоков инофрмации. Легче всего понять назначение репитера возможно рассмотрев пример вывода на странице .aspx блоков с анонсами статей, содержимое которых находится в БД.

Для начала определимся с постановкой вопроса.

Предположим, мы хотим на странице default.aspx блочно выводить минимальную информацию о имеющихся статьях в БД.
Как это может выглядеть?!

Да хотя бы так:

Reapeater SqlDataSource ObjectDataSource Eval Bound привязка

То есть, необходимо вывести из БД иконку (или путь на сервере к файлу иконки), название статьи, краткое описание статьи, дату публикации, публикатора (автора), количество просмотров и рейтинг. А также не забыть сформировать ссылку для перехода к полному тексту статьи. Таким образом, каждый блок будет представлять собой некую заговку каждой отдельной статьи. Имея 10 статей, мы должны получить 10 блоков.

Структуру БД рассматривать не будем, её мы можем восстановить из пользовательского типа на c#:

public class Article
{
    public int ID { get; private set; }

    public DateTime AddDate { get; private set; }
   
    public string Title { get; private set; }
    
    public string Prebody { get; private set; }

    public float Rating { get; private set; }
    
    public int ViewCount { get; private set; }
    
    public string Icon { get; private set; }

    public string Autor { get; private set; }
    
    
    public Article(
          int id, 
          DateTime addDate, 
          string title, 
          string prebody, 
          string body, 
          float rating, 
          int viewCount, 
          string icon, 
          string autor)
    {
          this.Id = id;
          this.AddDate = addDate;
	      this.Category = category;
          this.Title = title;
          this.Prebody = prebody;
          this.Rating = rating;
          this.ViewCount = viewCount;
          this.Icon = icon;
          this.Autor = autor;
    }  
}

Тип Article инкапсулирует собой необходимую информацию о конкретной статье, представляя открытые для чтения свойства, отображаемые на столбцы таблицы статей в БД.

И класс, представляющий методы для работы с типом Article:

public class BLL
{
	public static List
GetAllArticles () { using (SqlConnection cn = new SqlConnection(ConfigurationManager. ConnectionStrings["MyConnectionString"]. ConnectionString)) { string query = @"SELECT TOP(10) id, addDate, title, prebody, viewCount, icon, autor, allRating/amountOfRated AS rating FROM [articlesTable] ORDER BY addDate DESC"; var cmd = new SqlCommand(query, cn); cn.Open(); SqlDataReader reader = cmd.ExecuteReader(); List<Article> articles = new List<Article>(); while (reader.Read()) { Article art = new Article( (int)reader["id"], (DateTime)reader["addDate"], reader["title"].ToString(), reader["prebody"].ToString(), float.Parse(reader["rating"].ToString()), (int)reader["viewCount"], reader["icon"].ToString(), reader["autor"].ToString()); articles.Add(art); } return articles; } } }

Теперь, можно заняться непосредственно созданием шаблона на основе Repeater.

Сам по себе Repeater бесполезен, и лишь в привязке к любому из сурс-контролов способен генерировать необходимую html-разметку. Поэтому следующим шагом создаем ObjectDataSource и настраиваем его на получение требуемых книг из БД:

<asp:ObjectDataSource ID="Ods_Articles" runat="server"
   SelectMethod="GetAllArticles" TypeName="BLL">
</asp:ObjectDataSource>

Как видите, в нем мы указали имя класса TypeName="BLL", содержащего метод SelectMethod="GetAllArticles" для получения данных из БД.

Ну и теперь сам репитер:

<asp:Repeater ID="RptArt" runat="server"
DataSourceID="Ods_Articles"> 

<HeaderTemplate> 
  <table>
</HeaderTemplate>
   
<ItemTemplate>
  <tr>
    <td>
    <table>
      <tr>
        <td><span><%# Eval("Icon")%></span></td>
        <td><h2><%# Eval("Title")%></h2><br />
        <div><%# Eval("Prebody")%></div></td>
      </tr>
  <tr>
    <td colspan="2">
    <table width="100%">
      <tr>
        <td align="left">
        <div>
        <img align="left" hspace="16px"
        src="Images/publcite.jpg" />
        <%# Eval("AddDate", "{0:dd.MM.yyyy}")%> 
        <img src="Images/author.jpg" hspace="16px"/>
        <%# Eval("Autor")%>   Просмотрено <
        %# Eval("ViewCount")%>
        </div>
        </td>
        <td align="right">
<%# Rating.MakeRating(float.Parse(Eval("Rating").ToString()))%>
        <br /><br />
        <a href="Default.aspx?id=<
        %# Eval("ID")%>" id="A1">Читать статью</a> 
        </td>
      </tr>
    </table>
    </td>
  </tr>        
  </table>
  <br /><br />
  </td>
  </tr>
</ItemTemplate>

<FooterTemplate>
  </table>
</FooterTemplate>

</asp:Repeater>

Что здесь интересного?!

Первое, с чем приходится познакомиться, это сама структура Repeater.

<asp:Repeater ID="RptArt" runat="server"
   DataSourceID="Ods_Articles">
   
   <HeaderTemplate>
   </HeaderTemplate>
   
   <ItemTemplate>
   </ItemTemplate>
  
   <FooterTemplate>
   </FooterTemplate>  
  
</asp:Repeater>

Каждый репитер состоит из парного тега <asp:Repeater>, представляющего область самомго Repeater, <HeaderTemplate> - предсталяющего заголовок контрола, <ItemTemplate> - представляющего основную часть (для нас самую востребованную) и <FooterTemplate> - подпись.

В каждом из блоков может содержаться все что угодно, ну практически все, что требуется. Однако, акцент следует устанавливать именно на , поскольку именно данный блок умеет «множиться» и тем самым генерировать одинаковую html-разметку под форматированный вывод информации из списка List<Article> articles.

Как видите, формирование разметки начинается в блоке <HeaderTemplate> и заканчивается <FooterTemplate>.

В блоке <ItemTemplate> мы задаем html-шаблон для генерирования под каждую статью требуемого шаблона html-разметки.

Принимаемые Repeater-ом данные от связанного контрола ObjectDataSource мы выводим с помощью записей типа <%# Eval("Autor")%>, где в функции Eval задаем имя открытого свойства, информацию из которого следует получить в данном месте разметки.

Да, еще одно!
Запись <%# Rating.MakeRating(float.Parse(Eval("TotalRating").ToString()))%> указывает на то, что данные из поля Rating следует предварительно обработать статическим методом MakeRating класса Rating, который просто-напросто возвращает ссылку на соответствующий графический файл.

Конечную html-разметку, полученную репитером я приводить не буду, тем более, что здесь я не представлял стили css, но вы обязательно просмотрите в браузере разметку, полученную вашим Repeater-ом. Уверен, после анализа исходной разметки и полученным результатом вы более приблизитесь к пониманию принципа работы Repeater.

Вот и все сложности. Работать с элементом Repeater достаточно просто, главное в нем – это создание идеальной разметки. А наполнение его данными вовсе не составляет труда.

В следующей статье я постараюсь подготовить для вас один интересный вариант использования Repeater-а для вывода одной статьи с множеством комментариев. Именно на репитере мы реализуем симбиоз текста статьи и всех её комментариев. А пока постарайтесь осмыслить данную информацию и попробовать реализовать похожее у себя. Во всяком случае очень советую вам взять для себя на заметку элемент Repeater.

Вторая часть статьи HeaderTemplate и ItemTemplate


Больше информации читайте по теме:

c# - сортировка в GridView по нескольким столбцам
Вставка в GridView промежуточных (дополнительных) строк средствами c# (событие RowDataBound)
Получение объекта SessionState в обработчике запросов .ashx
Cross-Page Posting: Межстраничная отправка данных средствами ASP.NET (передача данных между страницами .aspx)
Динамическая генерация (автоматическое формирование) пути изображения с помощью хендлера .ashx
Скрытие пути изображения (защита изображения) ASP.NET
Установка капчи на сайте ASP.NET
Вставка (внедрение, подключение) кода JavaScript в страницу (разметку) ASP.NET
Отображение данных в GridView используя SqlDataSource
Типы проектов ASP.NET – Web Site и WebApplication
Семь важных фактов об ASP.NET



Оценить статью:

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

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Колик    14.07.2010 19:07:00
        

Очень толковая статья, а то везде только и пишут, что что такое репитер. А как его гениально применить никто не говорит. Спасибо автору.


        КонтролАльтДел    07.08.2010 18:31:58
        

И мое спасибо за данную статью


        Кирсанюк    25.10.2010 9:52:59
        

Спаисбо. Пишите еще на подобные темы статьи. спасибо за нестандартные примеры!!!!!!!!!!!


        НАРИК    11.11.2010 20:27:41
        

спасибо=) побольше бы такого, толково, понятного и не однообразного)


        Стельмах    12.01.2011 22:44:25
        

И мое спасибо. Хотелось бы еще таких статей по другим контролам FormView, ListView и тд


        Александр    13.04.2011 13:03:34
        

Спасибо за статью. Подскажите плз. как работает ета строка <a href="Default.aspx?id=<%# Eval("ID")%>"? Я так понимаю происходит передача текущего значение ID при нажатии на ссилку, а что ознает ета часть "?id="

92.249.75.92


        Саша    13.04.2011 17:20:25
        

# Eval("ID") указывает среде исполнения взять данные, хранящиеся в переменной (поле) ID того объекта, который возвращает ObjectDataSource (или любой другой DataSource, к примеру SqlDataSource) и поместить в выходном потоке

94.248.53.199


        Саша    13.04.2011 17:23:16
        

А выходной поток, это, грубо говоря, и есть посылаемая на клиент html-разметка. А запись ?id= означает параметр id, который знаком ? присоединяется к адресу в строке адреса. За знаком = как раз и указывается значение этого параметра (мы и вытягиваем это значение через Eval). Посмотри на эту страницу - видишь параметр ?id=154 ? В зависимости от этого параметра я и определяю какую статью отдавать в браузер на клиент.

94.248.53.199


        Александр    14.04.2011 17:19:06
        

Спасибо , разобрался)

92.249.75.92




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок