Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2013, 13:16   #1
Skifych
Новичок
Джуниор
 
Регистрация: 09.10.2013
Сообщений: 2
По умолчанию TableRow. Формирование таблицы

Добрый день.
Столкнулся с проблемой при создании простенькой вебчасти.
консольное приложение, на котором тестилась работа работает нормально, а вот вебчасть имеет "особенности".
Так она делает:
Выводит отдельно курс валют для USD, EUR, RUB (работает нормально)
Выводит табличку со всеми курсами (выводит бред)
Код:
<div><asp:Label ID="ZagolovokLabel" runat="server" Text="Курс валют НБУ по состоянию на:"></asp:Label></div>
<hr />
<div><asp:Label ID="usdLabel" runat="server" text="USD: "></asp:Label><asp:Label ID="usdCurs" runat="server" text="---.--"></asp:Label></div>
<div><asp:Label ID="eurLabel" runat="server" text="EUR: "></asp:Label><asp:Label ID="eurCurs" runat="server" text="---.--"></asp:Label></div>
<div><asp:Label ID="rubLabel" runat="server" text="RUB: "></asp:Label><asp:Label ID="rubCurs" runat="server" text="---.--"></asp:Label></div>
<hr />
<div>
<asp:Button ID="ButtonCursValut" runat="server" Text="Обновить" OnClick="ButtonCursValut_Click" /></div>
<hr />
<asp:Table ID="TableCursValut" runat="server"></asp:Table>
собственно кусок кода на клин по кнопке:

Код:
protected void ButtonCursValut_Click(object sender, EventArgs e)
        {
            WebClient webClient = new WebClient();
            String kursVal = webClient.DownloadString("http://bank-ua.com/export/currrate.xml");
            
            XDocument valDoc = XDocument.Parse(kursVal);
            var itemsXML = from x in valDoc.Descendants("item")
                           select new
                           {
                               dateXML = x.Descendants("date").First().Value,
                               codeXML = x.Descendants("code").First().Value,
                               char3XML = x.Descendants("char3").First().Value,
                               sizeXML = x.Descendants("size").First().Value,
                               nameXML = x.Descendants("name").First().Value,
                               rateXML = x.Descendants("rate").First().Value,
                               changeXML = x.Descendants("change").First().Value
                           };
            var ruVal = new string[7];
            var usVal = new string[7];
            var evVal = new string[7];
            TableRow rw = new TableRow();
            foreach (var itemXML in itemsXML)
            {
                if (itemXML.char3XML == "RUB")
                {
                    ruVal[0] = itemXML.dateXML;
                    ruVal[1] = itemXML.codeXML;
                    ruVal[2] = itemXML.char3XML;
                    ruVal[3] = itemXML.sizeXML;
                    ruVal[4] = itemXML.nameXML;
                    ruVal[5] = itemXML.rateXML;
                    ruVal[6] = itemXML.changeXML;
                }
                if (itemXML.char3XML == "USD")
                {
                    usVal[0] = itemXML.dateXML;
                    usVal[1] = itemXML.codeXML;
                    usVal[2] = itemXML.char3XML;
                    usVal[3] = itemXML.sizeXML;
                    usVal[4] = itemXML.nameXML;
                    usVal[5] = itemXML.rateXML;
                    usVal[6] = itemXML.changeXML;
                }
                if (itemXML.char3XML == "EUR")
                {
                    evVal[0] = itemXML.dateXML;
                    evVal[1] = itemXML.codeXML;
                    evVal[2] = itemXML.char3XML;
                    evVal[3] = itemXML.sizeXML;
                    evVal[4] = itemXML.nameXML;
                    evVal[5] = itemXML.rateXML;
                    evVal[6] = itemXML.changeXML;
                }
                TableCell cel = new TableCell();
                cel.Text = itemXML.dateXML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.codeXML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.char3XML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.sizeXML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.nameXML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.rateXML;
                rw.Cells.Add(cel);
                cel.Text = itemXML.changeXML;
                rw.Cells.Add(cel);
                TableCursValut.Rows.Add(rw);
            }
            usdCurs.Text = usVal[5] + " за " + usVal[3] + " USD";
            eurCurs.Text = evVal[5] + " за " + evVal[3] + " EUR";
            rubCurs.Text = ruVal[5] + " за " + ruVal[3] + " RUB";
            String tekData;
            tekData = DateTime.Now.ToString();
            ZagolovokLabel.Text = "Курс валют НБУ по состоянию на: " + tekData + " - Обновлен!";
        }
Проблема в том, что TableCursValut.Rows.Add(rw); даёт только одну строку, В ячейки попадают только значения:
cel.Text = itemXML.changeXML;
То есть одно значение вместо семи.
Подскажите, что делаю не так, или не правильно пользуюсь функцией?

Последний раз редактировалось Skifych; 09.10.2013 в 13:21. Причина: вставлено изображение
Skifych вне форума Ответить с цитированием
Старый 09.10.2013, 14:20   #2
Skifych
Новичок
Джуниор
 
Регистрация: 09.10.2013
Сообщений: 2
По умолчанию

Разобрался.
Действительно, неправильно использовал функцию
Вот правильный код
Код:
 protected void ButtonCursValut_Click(object sender, EventArgs e)
        {
            WebClient webClient = new WebClient();
            String kursVal = webClient.DownloadString("http://bank-ua.com/export/currrate.xml");
            
            XDocument valDoc = XDocument.Parse(kursVal);
            var itemsXML = from x in valDoc.Descendants("item")
                           select new
                           {
                               dateXML = x.Descendants("date").First().Value,
                               codeXML = x.Descendants("code").First().Value,
                               char3XML = x.Descendants("char3").First().Value,
                               sizeXML = x.Descendants("size").First().Value,
                               nameXML = x.Descendants("name").First().Value,
                               rateXML = x.Descendants("rate").First().Value,
                               changeXML = x.Descendants("change").First().Value
                           };
            var ruVal = new string[7];
            var usVal = new string[7];
            var evVal = new string[7];
            
            foreach (var itemXML in itemsXML)
            {
                
                if (itemXML.char3XML == "RUB")
                {
                    ruVal[0] = itemXML.dateXML;
                    ruVal[1] = itemXML.codeXML;
                    ruVal[2] = itemXML.char3XML;
                    ruVal[3] = itemXML.sizeXML;
                    ruVal[4] = itemXML.nameXML;
                    ruVal[5] = itemXML.rateXML;
                    ruVal[6] = itemXML.changeXML;
                }
                if (itemXML.char3XML == "USD")
                {
                    usVal[0] = itemXML.dateXML;
                    usVal[1] = itemXML.codeXML;
                    usVal[2] = itemXML.char3XML;
                    usVal[3] = itemXML.sizeXML;
                    usVal[4] = itemXML.nameXML;
                    usVal[5] = itemXML.rateXML;
                    usVal[6] = itemXML.changeXML;
                }
                if (itemXML.char3XML == "EUR")
                {
                    evVal[0] = itemXML.dateXML;
                    evVal[1] = itemXML.codeXML;
                    evVal[2] = itemXML.char3XML;
                    evVal[3] = itemXML.sizeXML;
                    evVal[4] = itemXML.nameXML;
                    evVal[5] = itemXML.rateXML;
                    evVal[6] = itemXML.changeXML;
                }

                var allVal = new string[7];
                    allVal[0] = itemXML.dateXML;
                    allVal[1] = itemXML.codeXML;
                    allVal[2] = itemXML.char3XML;
                    allVal[3] = itemXML.sizeXML;
                    allVal[4] = itemXML.nameXML;
                    allVal[5] = itemXML.rateXML;
                    allVal[6] = itemXML.changeXML;
                TableRow rw = new TableRow();
                for (int i = 0; i < 7; i++) { 
                    
                    TableCell cel = new TableCell();
                    cel.Text = allVal[i];
                    rw.Cells.Add(cel);
                }
                TableCursValut.Rows.Add(rw);

                

                
            }
            usdCurs.Text = usVal[5] + " за " + usVal[3] + " USD";
            eurCurs.Text = evVal[5] + " за " + evVal[3] + " EUR";
            rubCurs.Text = ruVal[5] + " за " + ruVal[3] + " RUB";
            
            
            String tekData;
            tekData = DateTime.Now.ToString();
            ZagolovokLabel.Text = "Курс валют НБУ по состоянию на: " + tekData + " - Обновлен!";
        }
то есть, вся загвоздка в TableCell cel = new TableCell(); Для каждой новой ячейки нужно заново вызывать конструктор. Деструктора нет в явном виде, потому реализовал черед массив allVal.

Последний раз редактировалось Skifych; 09.10.2013 в 14:22. Причина: добавил каммент
Skifych вне форума Ответить с цитированием
Старый 09.10.2013, 15:23   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

ужас, про биндинг почитайте
eval вне форума Ответить с цитированием
Старый 10.10.2013, 10:13   #4
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

[QUOTE=Skifych;1284160]
Код:
                TableRow rw = new TableRow();
                    TableCell cel = new TableCell();
Вот эти две строчки(их место вне цикла) и были источником Вашей проблемы.
simples вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование таблицы _Rumata_ Microsoft Office Excel 9 31.08.2012 12:42
формирование таблицы из элементов другой таблицы с удалением повторяющихся значений Selicat Microsoft Office Excel 1 20.10.2011 22:36
формирование новой таблицы по условию RUSer Microsoft Office Excel 9 22.04.2011 08:17
формирование сводной таблицы ЦЕРЦЕЯ Microsoft Office Excel 1 19.10.2010 22:17
Формирование таблицы Miker87 Microsoft Office Excel 4 22.07.2008 13:25