Data table windows forms

Windows Forms Как лучше представить таблицу?

Мне нужно в приложении Windows Forms представить результат работы программы в виде небольшой табличке, содержащей 2 столбца целых цифр. (строк порядка 10-20).

Это табличка должна располагаться прямо на форме.

Подскажите, как это лучше сделать?

Я думаю что можно сделать многострочный элемент TextBox. Или есть более эффективные способы?

Как лучше разрабатывать приложения по модели MVC в Windows Forms?
Т.е я обязан отделить логику,данные и форму. Но мне нужна совместимость формы и логики. Т.е логика.

Как лучше представить таблицу в виде двумерного списка
Доброго времени суток. Смоделировать таблицу с помощью двумерного списка можно двумя способами.

Почему Windows Forms лучше чем WPF?
Windows Forms полагается на чистом Windows API. С помощью Windows Forms можно написать любую.

Что лучше Windows Forms или WPF?
Доброго времени суток! подскажите те кто имеет опыт чем отличается приложение WPF от Windows Forms.

я вот думаю лучше через компонент DataGridView.

Добавлено через 57 секунд
Он как раз служить для представления данных в табличном виде.

Привязка данных (таблицы в Windows forms C#), виджет DataGridView

Данный материал является приложением к книге «С# 2008 и платформа .NET 3.5 для профессионалов» (Кристиан Нейгел) , и найден в свободных источниках.

Эта глава основана на материалах главы 26, в которой описаны различные способы извлечения и изменения данных, и посвящена представлению данных для пользователей с привязкой данных к различным элементам управления Windows.

Точнее говоря, здесь будут обсуждаться следующие вопросы:

  • Отображение данных с помощью элемента управления DataGridView;
  • Возможности привязки данных .NET и как они работают;
  • Как использовать проводник по серверу Server Explorer для создания
    соединения и генерации класса DataSet (не написав ни единой строки
    кода);
  • Как использовать проверку попаданий и рефлексию строк DataGrid.

Фрагменты из учебника:

Элемент управления DataGridView:

Элемент управления DataGrid, доступный начиная с ранних выпусков .NET, был вполне функциональным, но имел множество недоработок, которые делали его неподходящим для применения в коммерческих приложениях, например, отсутствовала возможность вывода графических изображений и раскрывающихся элементов, блокировка столбцов и тому подобное. Этот элемент управления был не вполне полноценным, поэтому многие независимые поставщики предлагали собственные сеточные компоненты, которые компенсировали эти недостатки и представляли гораздо более широкую функциональность.

В .NET 2.0 появился дополнительный сеточный элемент управления — DataGridView. Он восполнил многие недостатки своего предшественника и добавил важную функ- циональность, которая до этого была реализована лишь в продуктах независимых поставщиков.

Этот элемент оснащен такими же средствами привязки данных, как и старый DataGrid, а потому может работать совместно с классами Array, DataTable, DataView или DataSet либо компонентами, реализующими интерфейс IListSource или IList. Эле- мент управления DataGridView обеспечивает возможности разнообразного представления одних и тех же данных. В простейшем случае отображаемые данные (такие как из DataSet) указываются установкой значений свойств DataSource и DataMember. Отметим, что этот элемент управления не может подставляться вместо DataGrid, потому что его программный интерфейс полностью отличается от интерфейса DataGrid. К тому же он предлагает более широкие возможности, о которых мы и поговорим в этой главе.

Отображение табличных данных:

Следующий пример демонстрирует, как извлечь данные и отобразить их в элементе управления DataGridView. Для этой цели мы создадим новое приложение DisplayTabularData, внешний вид которого показан на следующем рисунке:

Это простое приложение выбирает каждую запись из таблицы Customer базы данных Northwind и отображает эти записи пользователю в элементе управления DataGridView. Ниже показан код этого примера (исключая код определения формы и элемента управления).

using System;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace DisplayTabularData
<
partial class Form1: Form
<
public Form1()
<
InitializeComponent();
>

private void getData_Click(object sender, EventArgs e)
<
string customers = «SELECT * FROM Customers»;
using (SqlConnection con = new SqlConnection (ConfigurationManager.
ConnectionStrings[«northwind»].ConnectionString))
<

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(customers, con);
da.Fill(ds, «Customers»);

dataGridView.AutoGenerateColumns = true;
dataGridView.DataSource = ds;
dataGridView.DataMember = «Customers»;
>
>
>
>

При этом конструируется объект SqlConnection, использующий свойство ConnectionStrings класса ConfigurationManager. Далее создается набор данных и заполняется на основе таблицы базы данных с помощью объекта DataAdapter. Затем эти данные отображаются элементом управления DataGridView за счет установки свойств DataSource и DataMember.

Отметим, что свойству AutoGenerateColumns также присваивается значение true, поскольку это гарантирует, что пользователь что-то увидит. Если этот флаг не установлен, все столбцы придется создавать самостоятельно.

Элемент управления DataGridView предлагает гибкий способ отображения данных; в дополнение к установке DataSource равным DataSet, а DataMember — равным имени отображаемой таблицы, свойство DataSource может указывать на любой из следующих источников:

  • массив (визуальная таблица может быть связана с любым одномерным массивом);
  • DataTable;
  • DataView;
  • DataSet или DataViewManager;
  • компоненты, реализующие интерфейс IListSource;
  • компоненты, реализующие интерфейс IList;
  • любой обобщенный класс коллекции или объект, унаследованный от обобщенного класса коллекции.

В последующих разделах будут представлены примеры применения каждого из упомянутых источников данных.

Отображение данных из массива :

На первый взгляд это кажется простым. Нужно создать массив, наполнить его некоторыми данными и установить свойство DataSource элемента управления DataGridView. Вот пример кода:

string[] stuff = new string[] <"One", "Two", "Three">;
dataGridView.DataSource = stuff;

Если источник данных включает множество возможных таблиц-кандидатов (как в случае с DataSet или DataViewManager), также понадобится установить свойство DataMember.

Можно заменить этим кодом код события getData_Click из предыдущего примера. Проблема с этим кодом проявляется в отображении данных:

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

Первое (и единственное) общедоступное свойство строки — это длина, потому она и отображается.

Список свойств каждого класса может быть получен с помощью метода GetProperties класса TypeDescriptor. Он возвращает коллекцию объектов PropertyDescriptor, которая затем может использоваться для отображения данных.

Элемент управления .NET PropertyGrid применяет этот метод для отображения произвольных объектов. Один из способов решения этой проблемы с отображением строк в DataGridView заключается в создании класса-оболочки:

(И т.д. — продолжение в самой методичке, качайте)

Data table windows forms

После получения данных из базы данных через SqlDataAdapter в DataSet мы можем локально работать с этими данными вне зависимости от наличия подключения. Более того если нам даже и не надо использовать никакую базу данных, но при этом мы хотим иметь удобный функционал для работы с данными в виде наборов таблиц, то мы также можем воспользоваться классом DataSet.

Объект DataSet содержит таблицы, которые представлены типом DataTable . Таблица, в свою очередь, состоит из столбцов и строк. Каждый столбец представляет объект DataColumn , а строка — объект DataRow . Все данные строки хранятся в свойстве ItemArray , который представляет массив объектов — значений отдельных ячеек строки. Например, получим все таблицы и выведем их содержимое:

Теперь рассмотрим, как мы можем работать с объектами DataSet и DataTable без какой-либо базы данных. Например, создадим вручную в DataSet несколько таблиц и определим их структуру:

Разберем весь код. Сначала создаются объекты DataSet и DataTable, в конструктор которых передается название. Затем создается четыре столбца. Каждый столбец в конструкторе принимает два параметра: имя столбца и его тип.

Причем для столбца Id устанавливается, что значения этого столбца должны иметь уникальное значение, не должны принимать null, и их значение при добавлении нового объекта будет инкрементироваться на единицу. То есть фактически это стандартный столбец Id, как в большинстве баз данных.

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

То есть в данном случае значение столбца Discount равно значению столбца Price, помноженного на 0.2.

Затем устанавливается первичный ключ для таблицы с помощью свойства PrimaryKey:

В роли первичного ключа выступает столбец Id. Но мы также можем использовать набор различных столбцов для создания составного ключа.

После определения схемы таблицы в нее добавляются две строки:

Значения в метод booksTable.Rows.Add можно передать как напрямую в виде массива объектов, так и в виде объекта DataRow. При этом нам надо передать ровно столько значений, сколько в таблице столбцов. Однако поскольку первый столбец Id устанавливается через автоинкремент, мы можем передать значение null — оно все равно будет игнорироваться. Также мы можем опустить последний параметр для столбца Discount, так как его значение вычисляется с помощью выражения «Price * 0.2». Более того мы даже можем опустить значение для третьего столбца Price, так как у него установлено свойство DefaultValue , которое устанавливает значение по умолчанию, если значение отсутствует:

И в конце идет перебор строк таблицы.

Кроме добавления мы можем производить и другие операции со строками. Например, мы можем получить строку по индексу:

Получив строку по индексу, можно изменить ее ячейки:

И также можно удалять строку:

Используя метод Select() объекта DataTable мы легко можем найти строки, которые соответствуют определенному критерию. Например, получим строки, в которых цена больше 120:

Как привязать данные к элементу управления Windows Forms DataGridView How to: Bind data to the Windows Forms DataGridView control

DataGridViewЭлемент управления поддерживает стандартную модель привязки данных Windows Forms, поэтому она может выполнять привязку к различным источникам данных. The DataGridView control supports the standard Windows Forms data binding model, so it can bind to a variety of data sources. Как правило, привязка выполняется к элементу BindingSource , который управляет взаимодействием с источником данных. Usually, you bind to a BindingSource that manages the interaction with the data source. BindingSourceМожет быть любым Windows Formsным источником данных, что обеспечивает большую гибкость при выборе или изменении расположения данных. The BindingSource can be any Windows Forms data source, which gives you great flexibility when choosing or modifying your data’s location. Дополнительные сведения о том, какие источники данных DataGridView поддерживает элемент управления, см. в разделе Общие сведения об элементе управления DataGridView. For more information about data sources the DataGridView control supports, see the DataGridView control overview.

Visual Studio обладает расширенной поддержкой привязки данных к элементу управления DataGridView. Visual Studio has extensive support for data binding to the DataGridView control. Дополнительные сведения см. в разделе инструкции. Привязка данных к элементу управления Windows Forms DataGridView с помощью конструктора. For more information, see How to: Bind data to the Windows Forms DataGridView control using the Designer.

Подключение элемента управления DataGridView к данным: To connect a DataGridView control to data:

Реализуйте метод для управления деталями извлечения данных. Implement a method to handle the details of retrieving the data. В следующем примере кода реализуется GetData метод, который инициализирует SqlDataAdapter и использует его для заполнения DataTable . The following code example implements a GetData method that initializes a SqlDataAdapter, and uses it to populate a DataTable. Затем он привязывает DataTable к BindingSource . It then binds the DataTable to the BindingSource.

В Load обработчике событий формы привяжите DataGridView элемент управления к BindingSource и вызовите GetData метод для получения данных. In the form’s Load event handler, bind the DataGridView control to the BindingSource, and call the GetData method to retrieve the data.

Пример Example

Этот полный пример кода извлекает данные из базы данных для заполнения элемента управления DataGridView в форме Windows Forms. This complete code example retrieves data from a database to populate a DataGridView control in a Windows form. Форма также содержит кнопки для перезагрузки данных и отправки изменений в базу данных. The form also has buttons to reload data and submit changes to the database.

Для этого примера требуются: This example requires:

Доступ к образцу базы данных Northwind SQL Server. Access to a Northwind SQL Server sample database. Дополнительные сведения об установке образца базы данных Northwind см. в статье получение образцов баз данных для ADO.NET кода. For more information about installing the Northwind sample database, see Get the sample databases for ADO.NET code samples.

Ссылки на системные сборки, System. Windows. Forms, System. Data и System.Xml. References to the System, System.Windows.Forms, System.Data, and System.Xml assemblies.

Чтобы выполнить сборку и запуск этого примера, вставьте код в файл кода Form1 в новом Windows Forms проекте. To build and run this example, paste the code into the Form1 code file in a new Windows Forms project. Сведения о построении из командной строки C# или Visual Basic см. в разделе Построение из командной строки с помощью csc.exe или Сборка из командной строки. For information about building from the C# or Visual Basic command line, see Command-line building with csc.exe or Build from the command line.

Заполните connectionString переменную в примере значениями для образца подключения к базе данных Northwind SQL Server. Populate the connectionString variable in the example with the values for your Northwind SQL Server sample database connection. Проверка подлинности Windows, называемая также встроенной безопасностью, является более безопасным способом подключения к базе данных, чем сохранение пароля в строке подключения. Windows Authentication, also called integrated security, is a more secure way to connect to the database than storing a password in the connection string. Дополнительные сведения о безопасности подключения см. в разделе Защита сведений о подключении. For more information about connection security, see Protect connection information.

Читайте также:  Не хватает прав администратора mac os
Оцените статью
[ —>Скачать с сервера (1.62 Mb) — бесплатно] 24.04.2010, 16:53