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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица в c# 
:(
    Опции темы
Legolas
Дата 1.5.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Посоветуйте, как в C# лучше создать таблицу с различными функциями (сортировка)?  smile 
PM MAIL   Вверх
MFSham
Дата 1.5.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть компонент DataGridView. Поюзай его, там все есть.
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Void
Дата 1.5.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Поскольку непонятно, имелась ли в виду таблица, как визуальный компонент, или как логическая сущность, то надо ещё упомянуть System.Data.DataTable.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Legolas
Дата 1.5.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Void @ 1.5.2007,  16:25)
Поскольку непонятно, имелась ли в виду таблица, как визуальный компонент, или как логическая сущность, то надо ещё упомянуть System.Data.DataTable.

Имеется ввиду как визуальный компонент. Только не очень понятно как заполнять отдельные ячейки... Подскажите!) 

Что такое System.Data.DataTable??? 
PM MAIL   Вверх
Void
Дата 1.5.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(Legolas @  1.5.2007,  18:38 Найти цитируемый пост)
как заполнять отдельные ячейки

Код
dataGridView.Rows[row].Cells[column] = value;

Цитата(Legolas @  1.5.2007,  18:38 Найти цитируемый пост)
Что такое System.Data.DataTable

Это класс. И даже компонент. Представление таблицы в памяти, которое, кстати, можно привязать к DataGridView через data binding. RTFMSDN


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
MFSham
Дата 1.5.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пример создания пустой таблицы:
Код

public void CreateTable(DataGridView dGrid)
        {
            System.Data.DataTable myTable = new System.Data.DataTable("Table"); // создание самой таблицы
            
            DataColumn dCol;  // объявление столбца в таблице

            // создание первого столбца
            dCol = new DataColumn();
            dCol.DataType = Type.GetType("System.Int32");
            dCol.ColumnName = "Column 1"; ;
            dCol.ReadOnly = true;
            dCol.AutoIncrement = true;            
            myTable.Columns.Add(dCol); // добавление в таблицу

            // второго
            dCol = new DataColumn();
            dCol.DataType = Type.GetType("System.String");
            dCol.ColumnName = "Column 2";
            myTable.Columns.Add(dCol);
            
            // третьего
            dCol = new DataColumn("Column 3", Type.GetType("System.String"));   // или так
            myTable.Columns.Add(dCol);

            dGrid.DataSource = myTable;  // передача данных DataGridView
        }

private void button1_Click(object sender, EventArgs e)
        {
            this.CreateTable(dataGridView1);            
        }

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Legolas
Дата 1.5.2007, 18:37 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо, а как задавать размер каждого столбца?

И ещё вопрос: как можно добавить ряд?

Это сообщение отредактировал(а) Legolas - 1.5.2007, 18:42
PM MAIL   Вверх
Void
Дата 1.5.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Код
// column - номер столбца (int) или его имя (string)
dataGridView.Columns[column].Width = 100; // в пикселах



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Legolas
Дата 1.5.2007, 18:49 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А насчет ряда?)
PM MAIL   Вверх
MFSham
Дата 1.5.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Legolas @  1.5.2007,  18:49 Найти цитируемый пост)
А насчет ряда?)

Код

// третьего
...
            dCol = new DataColumn("Column 3", Type.GetType("System.String"));   // или так
            myTable.Columns.Add(dCol);

            DataRow dRow;
            dRow = myTable.NewRow();
            dRow["Column 2"] = "abc";   // обращение по имени
            // или 
            dRow[2] = "def"; // обращение по индексу, нумерация с 0
            myTable.Rows.Add(dRow);

            // и так по аналогии...

            dGrid.DataSource = myTable;  // передача данных DataGridView

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Legolas
Дата 1.5.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо, а как для DataTable изменить размер колонки?
PM MAIL   Вверх
MFSham
Дата 1.5.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



По аналогии можно было бы и догодаться:
Код

dataGridView1.Rows[row].Height = 100;

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Legolas
Дата 1.5.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(MFSham @ 1.5.2007,  19:33)
По аналогии можно было бы и догодаться:
Код

dataGridView1.Rows[row].Height = 100;

Выдает следующую ошибку: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
PM MAIL   Вверх
Tror
Дата 1.5.2007, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



ну так у тубя row больше чем строк в таблице
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Legolas
Дата 1.5.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

dataGridView1.Columns["0"].Width = 73;[


Такая же ошибка для первого (нулевого) столбца...

Это сообщение отредактировал(а) Legolas - 1.5.2007, 20:06
PM MAIL   Вверх
Tror
Дата 1.5.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



"0" -- Это индекс или название колонки?
если индекс тогда кавычки не нужны
что то я сомневаюсь что ошибка такая же.
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Legolas
Дата 1.5.2007, 20:36 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В смысле да, без кавычек, но это сути не меняет - ошибка та же.
PM MAIL   Вверх
MFSham
Дата 1.5.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Legolas @  1.5.2007,  19:46 Найти цитируемый пост)
Выдает следующую ошибку: Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index

Эта ошибка тебе сообщает, что такого номера строки не существует. Скорее всего ты просто вначале вызываешь еще пока не существующую строку, а лишь затем ее создаешь.
Код

...
            DataRow dRow;
            int count = 5;  // количество строк

            for (int i = 0; i < count; i++)  // создание
            {
                dRow = myTable.NewRow();
                myTable.Rows.Add(dRow);
            }                                             

            dGrid.DataSource = myTable;  // передача данных DataGridView
...

private void button1_Click(object sender, EventArgs e)
        {
            this.CreateTable(dataGridView1);           // создание таблицы вместе с 5 строками
            this.dataGridView1.Rows[2].Cells[1].Value = "some text"; // сработает нормально
            this.dataGridView1.Rows[6].Cells[2].Value = "la-la-la";  // ошибка, всего столбцов только 5
        }

--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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