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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамическое построение таблицы 
V
    Опции темы
RWander
Дата 24.2.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

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



недавно стал изучать ASP.NET. До это только на PHP и на ASP кодил. Одной из главной фишек ASP.NET стало разделение кода реализации и представления страничек, т.е. как я понял в asp-код нельзя вставлять серверные инструкции, как например в РНР. Так вот сталкнулся с следующей проблемой как мне динамически сформировать таблицу. Например, у меня есть два TextBox, в первом мы задаем количество строк, во втором - количество столбцов. После нажатия на кнопку Button, строится таблица. как мне это реализовать?


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Mymik
Дата 24.2.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



объяснять долго, потому легче показать пример -->>
aspx файл
Код

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="_default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <!--  Чтобы лучше было видно результат -->
    <style type="text/css">
        table td { border:solid 1px #000;}
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <!-- Поля для ввода -->
        Rows: <asp:TextBox ID="txtRows" runat="server" /> Columns: <asp:TextBox ID="txtColumns" runat="server" /><br/>
        <!-- Кнопка генерации -->
        <asp:Button ID="btnGen" OnClick="btnGen_Click" Text="Сгенерировать" runat="server" />
        <!-- Куда будем помещать результат -->
        <asp:PlaceHolder ID="phRes" runat="server" />
    </form>
</body>
</html>


CS файл
Код

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class _default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    /* обработчик события */
    protected void btnGen_Click(object sender, EventArgs e)
    {
        int row;
        int col;
        /* парсим данные пришедшие от пользователя. А потому как все что пришло от пользователя зло, потому парсим только лишь с помощью TryParse */
        int.TryParse(txtRows.Text.Trim(), out row);
        int.TryParse(txtColumns.Text.Trim(), out col);
        /* проверяем на вшивость */
        if (row <= 0 || col <= 0)
        {
            /* Матюкаемся */
            phRes.Controls.Add(new LiteralControl("Не удалось создать"));
            return;
        }
        /* Создаем экземпляр таблицы */
        Table table = new Table();
        for(int y = 0; y < row; y++)
        {
            /* Создаем экземпляр строки таблицы */
            TableRow r = new TableRow();
            for(int x = 0; x < col; x++)
            {
                /* Создаем экземпляр колонки таблицы */
                TableCell c = new TableCell();
                /* Наполняем текстом */
                c.Text = String.Format("y:{0}, x:{1}", y, x);
                /* Добавляем объект в коллекцию строки таблиц */
                r.Cells.Add(c);
            }
            /* Добавляем объект в коллекцию строк таблицы */
            table.Rows.Add(r);
        }
        /* Добавляем в для того чтобы выводилось */
        phRes.Controls.Add(table);
    }
}

После того как мы добавили все это дело в контрол phRes мы заканчиваем работу. После этого проходят циклы жизни страницы и мы парсер подбирается к Render методу. В этом методе он начинает рендерить phRes  контрол, который содержит в себе наш объект. У нашего объекта вызывается тоже метод Render и мы видим нашу замечательную таблицу на страничке сайта smile вот так вот.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
RWander
Дата 25.2.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

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



а как сделать, чтобы в ячейки таблицы можно было вводить данные? а затем была бы возможность считать их оттуда


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Mymik
Дата 25.2.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

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



RWander, в OnInit нужно восстановить состояние страницы. Либо в сессии, либо еще где ты ставишь флажок и потом если этот флажек поднят, то ты восстанавливаешь таблицу. Если нет, то не восстанавливаешь.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
RWander
Дата 2.3.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

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



Цитата(Mymik @  25.2.2008,  14:23 Найти цитируемый пост)
RWander, в OnInit нужно восстановить состояние страницы. Либо в сессии, либо еще где ты ставишь флажок и потом если этот флажек поднят, то ты восстанавливаешь таблицу. Если нет, то не восстанавливаешь.


можно пример как это сделать?

Для того, чтобы можно было вводить свои данные в таблицу, использую следующий код:

Код

    private void setMatrixA(int x, int y) // x, y - количество столбцов и строк таблицы
    {
        // создаем таблицу
        Table table = new Table();
        table.BorderWidth = 1;
        table.BorderColor = System.Drawing.Color.Black;

        // заполняем таблицу
        for (int j = 0; j < y; j++)
        {
            TableRow row = new TableRow();
            for (int i = 0; i < x; i++)
            {
                TableCell cell = new TableCell();
                TextBox texbox = new TextBox();
                cell.Controls.Add(texbox);
                row.Cells.Add(cell);
            }
            table.Rows.Add(row);
        }
        this.ph1.Controls.Add(table);
    }


допустим, теперь мне нужно считать данные из TextBox'ов данной таблицы. Как сделать считывание данной таблицы в массив при нажатии на кнопку Buttom, и чтобы при нажатии на кнопку текущее состояние страницы сохранялось?


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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