Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Отображение данных в DataGridView (VS 2008).


Автор: KaSandra 6.3.2008, 15:20
Привет!
Помогите пожалуйста, подскажите, как отобразить данные в DataGridView (VS2008,C#).
Код

                conn.Open ();
                SqlCommand com = new SqlCommand("select * from ProdJournalTable where JournalId like '%" + JournalIdMask + "'", conn);
                SqlDataReader readerProdJournalTable = com.ExecuteReader();
                dataGridView1.DataSource = readerProdJournalTable;


Автор: HellMasterHaiL 6.3.2008, 17:56
а не лучшебы использовать датасет?

Создаем в проекте DataSet DS_ProdJournal, в нем конструктором делаем TableAdapter к искомой таблице в БД ProdJournalTable, таким же именем DataAdapter  и назовем. 

Потом в конструкторе на форме делаем BindingSource на нашу таблицу ProdJournalTable в DataSet'е, мну проще в конструкторе, а так кодом примерно выглядит так:
Код

        Dim ProdJournalTable As DataTable = DS_ProdJournal.Tables("ProdJournalTable")
        Dim dataSource As New BindingSource(ProdJournalTable, Nothing)
        dataGridView1.Columns.Clear()
        dataGridView1.DataSource = Nothing
        dataGridView1.DataSource = dataSource


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

Dim myTableAdapter as new SqlDataAdapter (("select top * from ProdJournalTable where JournalId like '%" & JournalIdMask & "'",conn)
myTableAdapter.Fill (DS_ProdJournal.ProdJournalTable)

ДатаГрид обновится сам

не знаю помог или же писанину развел)

Автор: KaSandra 6.3.2008, 19:28
Спасибо за ответ! Но к сожалению данный способ работы мне не подходит. Программа с использованием DataSet, DataAdapter уже мной написана, но для другой задачи. В данном же случае более удачным является присоединенный режим работы с БД, а не отсоединенный, т.е. эффективнее использовать  DataReader.

Автор: HellMasterHaiL 6.3.2008, 19:56
ну тада ручкам и, в цикле, пока читается ридер, добавлять по одной строке в грид...
другие способы вообще в голову не приходят...

Автор: KaSandra 7.3.2008, 08:59
Нет, он точно есть. Вот в VS2005 всего-то к моему коду нужно добавить одну строку DataGrid1.DataBind().

Ура! Нашла! Работает!

Автор: Chertov 13.3.2008, 16:07
Компилятор VS 2008... там в гриде нету DataBind().
У меня аналогичная проблема... необходимо обновлять dataGridView...
датагридвью настроен... подогнаны размеры колонок

если я делаю 
Код

            grid.Columns.Clear();
            grid.DataSource = null;
            grid.DataSource = dt;
            grid.Update();

то у меня данные появляются в таблице, но все оформление и настройки датагрида слетают

если не пишу grid.Columns.Clear(); то у меня просто добавляются колонки справа и в них данные... а я хочу вставить данные в настроенный грид
Код

            grid.DataSource = null;
            grid.DataSource = dt;
            grid.Update();


Пока тупо пересчитываю так
Код

        private void Client_UpdateTable0(DataTable dt)
        {
            //grid.Columns.Clear();
            //grid.DataSource = null;
            //grid.DataSource = dt;
            //grid.Update();

            for (int i = 0; i < grid.Rows.Count; i++)
                for (int j = 0; j < grid.Columns.Count; j++)
                    grid[j, i].Value = dt.Rows[i].ItemArray[j].ToString();

        }


Автор: KaSandra 13.3.2008, 22:17
DataGridView настраивать пока даже не пыталась. Но данные отобразила другим способом. 

Код

                SqlDataReader reader = cmd.ExecuteReader();
                BindingSource b = new BindingSource();
                b.DataSource = reader;
                dataGridView1.DataSource = b;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)