Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите Repeater'ом плиз!!! 
:(
    Опции темы
GRIENDERS
Дата 20.5.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.2.2007

Репутация: 1
Всего: 1



Есть такой XML файл
Код

<?xml version="1.0" encoding="windows-1251" ?> 
<rss version="2.0">
 <channel>
  <title>Lenta.ru: НОВОСТИ, 20.05.2007</title> 
  <link>http://lenta.ru/</link> 
  <description>Ежедневная интернет-газета. Новости со всего мира на русском языке</description> 
<item>
  <title>Британский МИД заподозрили в желании заморозить дело Литвиненко</title> 
  <link>http://lenta.ru/news/2007/05/20/litvinenko/</link> 
  <description>Британский таблоид News of the World утверждает, что министр иностранных дел Великобритании Маргарет Беккет рекомендовала не предъявлять Андрею Луговому и Дмитрию Ковтуну обвинения в убийстве Александра Литвиненко, чтобы не портить отношения Лондона с Москвой. Глава Королевской прокуратуры уже опроверг эти сведения.</description> 
  <pubDate>Sun, 20 May 2007 09:07:20 +0400</pubDate> 
  <category>В мире</category> 
  </item>
<item>
  <title>Скончалась телеведущая Валентина Леонтьева</title> 
  <link>http://lenta.ru/news/2007/05/20/leontieva/</link> 
  <description>На 85-м году жизни в Ульяновске скончалась известная телеведущая Валентина Михайловна Леонтьева, сообщается в воскресенье на сайте Первого телеканала. Она вела такие передачи, как "В гостях у сказки", "Спокойной ночи, малыши!", "Будильник", "От всей души" и "Голубой огонек". Причина смерти не сообщается.</description> 
  <pubDate>Sun, 20 May 2007 12:00:09 +0400</pubDate> 
  <category>Масс-медиа</category> 
  </item>
</channel>
  </rss>

Надо прочитать из него все значения узлов title , description и link и вывести на страницу с помощью Repeater или GridView (не знаю как лучше) в виде таблицы. Значение link перед выводом надо немного изменить
Как это все сделать?
Помогите, я уже совсем заммучился

Вот, к-ч накатал. Пашет не так как надо
Код

 protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.ItemTemplate = new GRIENDERS_NET.NewsRepeatertemplate();
        Repeater1.DataSource = GRIENDERS_NET.NewsRepeatertemplate.CreateDataTable();
        Repeater1.DataBind();
}


//////////////////////////////////////////////////////////
public  class NewsRepeatertemplate: ITemplate
    {
      public NewsRepeatertemplate() { }
        #region ITemplate Members

        public void InstantiateIn(Control container)
        {
            Label lb = new Label();
            lb.Text = "This is my template<br>";
            container.Controls.Add(lb);
        }

        #endregion
      static public DataTable CreateDataTable()
      {
          DataTable dt = new DataTable();
          DataRow dr1, dr2, dr3, dr4;
          dt.Columns.Add("Title", System.Type.GetType("System.String"));
          dt.Columns.Add("Description", System.Type.GetType("System.String"));
          dt.Columns.Add("Link", System.Type.GetType("System.String"));
         
          dr1 = dt.NewRow();
          dr1[0] = "I";
          dr1[1] = "I to";
          dt.Rows.Add(dr1);

          dr2 = dt.NewRow();
          dr2[0] = "I";
          dr2[1] = "I to";
          dt.Rows.Add(dr2);
          
          dr3 = dt.NewRow();
          dr3[0] = "I";
          dr3[1] = "I to";
          dt.Rows.Add(dr3);
          

          return dt;
      }

Выводит 3 label'ла.  Надо чуть исправить. Предоставляю Вам такую возможность, т к у меня в голове после всего этого ТАКАЯ каша!
PM MAIL   Вверх
Сарт
Дата 21.5.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: нет
Всего: 0



А нафига тебе столько dr?? Могу ошибаться, но ведь можно и так
  
Код

         DataRow dr1;
          ......
          dr1 = dt.NewRow();
          dr1[0] = "I";
          dr1[1] = "I to";
          dt.Rows.Add(dr1);

          dr1[0] = "I";
          dr1[1] = "I to";
          dt.Rows.Add(dr1);
          
          
          dr1[0] = "I";
          dr1[1] = "I to";
          dt.Rows.Add(dr1);

          

Если я прав, и все будет работать- делай так=) Память нужно экономить=)

Добавлено через 1 минуту и 34 секунды
А где у тебя хоть какая то работа с ХМЛ?????
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
SpaceSpace
Дата 21.5.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 3
Всего: 10



2GRIENDERS

Цитата

Предоставляю Вам такую возможность, т к у меня в голове после всего этого ТАКАЯ каша!

Все конечно так и разбежались эту возможность реализовывать  smile 
Ну, если серьезно.
Ты не учитываеш, что после того как биндиш ресурс, нужно распределить конкретные значения столбцов конкретным данным.

Может быть тебе подойдет такой подход?

Это твой шаблон
Код

  public class RepeaterTemplate : ITemplate
    {
        public RepeaterTemplate()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public void InstantiateIn(Control container)
        {
// Причем, смотри -сколько колонок, столько и лэйблов, у каждого свой ID
            Label lb = new Label();
            lb.ID = "label1";
            container.Controls.Add(lb);
            lb = new Label();
            lb.ID = "label2";
            container.Controls.Add(lb);
            lb = new Label();
            lb.ID = "label3";
            container.Controls.Add(lb);
            container.Controls.Add(new LiteralControl("<br/>"));
        }
// Тут всё тоже самое
        static public DataTable CreateDataTable()
        {
            DataTable dt = new DataTable();
            DataRow dr1;
            dt.Columns.Add("Title", System.Type.GetType("System.String"));
            dt.Columns.Add("Description", System.Type.GetType("System.String"));
            dt.Columns.Add("Link", System.Type.GetType("System.String"));

            dr1 = dt.NewRow();
            dr1[0] = "I";
            dr1[1] = "I to";
            dr1[2] = "1";
            dt.Rows.Add(dr1);

            dr1 = dt.NewRow();
            dr1[0] = "I";
            dr1[1] = "I to";
            dr1[2] = "2";
            dt.Rows.Add(dr1);

            dr1 = dt.NewRow();
            dr1[0] = "I";
            dr1[1] = "I to";
            dr1[2] = "3";
            dt.Rows.Add(dr1);


            return dt;
        }
    }


Ну а это страница, где будет происходить связывание
Надо просто обработать событие ItemDataBound репитера,
в его параметрах сожержится строка твоей таблицы

Код

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.ItemTemplate = new RepeaterTemplate();
        Repeater1.DataSource = RepeaterTemplate.CreateDataTable();
        Repeater1.DataBind();
    }
//Ну а тут надо обработать каждое связывание дата- строки с твоим доморощенным шаблоном
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.DataItem != null)
        {
            // мы находим лэйбл по ID                                а тут берем соответствующие колонки таблицы
            (e.Item.FindControl("label1") as Label).Text = (string)((DataRowView)e.Item.DataItem).Row[0];
            (e.Item.FindControl("label2") as Label).Text = (string)((DataRowView)e.Item.DataItem).Row[1];
            (e.Item.FindControl("label3") as Label).Text = (string)((DataRowView)e.Item.DataItem).Row[2];
        }
    }
}





--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
GRIENDERS
Дата 21.5.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.2.2007

Репутация: 1
Всего: 1



SpaceSpace, спасибо. Буду парсить. Будут вопросы - напишу smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.