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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2011, 20:41   #1
Mystery_Planet
 
Регистрация: 06.05.2011
Сообщений: 7
По умолчанию Не выводит в ДатаГридВью

Есть запрос, есть программа, там все работает, но почему то не выводит. Нет ошибки, но вот несколько последних строчек про вывод, но они делают следующее: была вся таблица, а они убирают все ячейки оттуда, хотя должна была остаться 1 по идее((
вот прога:
c#
Код:
            int q;
            q = int.Parse(textBoxНомер.Text);
            SqlCommand cmd = new SqlCommand();

            SqlConnection con = new SqlConnection();
            con.ConnectionString = connectionString;
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "[process3]";
            cmd.Parameters.Clear();
            SqlParameter p1 = cmd.Parameters.Add("@nameFlight", SqlDbType.Int);
            p1.Direction = ParameterDirection.Input;

            p1.Value = q;
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();//!!!!!!!
            timeTableDataGridView.DataSource = reader;//!!!!!
Mystery_Planet вне форума Ответить с цитированием
Старый 07.05.2011, 00:00   #2
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

В общем-то все вопросы к той самой хранимой процедуре, что на сервере. Вывод ведь через Binding реализован. Как вариант, можно ещё обнулять DataSource у DataGridView, перед присваиванием нового...
Spawn™Production® вне форума Ответить с цитированием
Старый 07.05.2011, 00:33   #3
Mystery_Planet
 
Регистрация: 06.05.2011
Сообщений: 7
Подмигивание

Вот сам запрос
Код:
ALTER procedure process3
@nameFlight int
as
select *
from TimeTable 
where [Номер рейса]=@nameFlight
Но он то работает ( я по дебаггинг вижу). Только в дату гридвью то что надо не выводит: он берет и оттуда все ячейки удаляет. Так что вывод тут неверный..и вот я не знаю где же ошибка(
Mystery_Planet вне форума Ответить с цитированием
Старый 07.05.2011, 00:47   #4
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

А, мм, просмотрел я что Вы в DataSource пытаетесь положить...
Посмотрите на пример работы с SqlDataReader
Spawn™Production® вне форума Ответить с цитированием
Старый 07.05.2011, 10:44   #5
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Только в дату гридвью то что надо не выводит: он берет и оттуда все ячейки удаляет. Так что вывод тут неверный..и вот я не знаю где же ошибка(
Ошибка в том, что вы присваиваете DataSource не то, что нужно.
Чтобы данные отображались в dataGridView - необходимо, чтобы источник данных, (присвоенный DataSource) реализовывал хотя бы один из интерфейсов: IList, IListSource, IBindignList или IBindingListView. DbDataReader этого, конечно, не поддерживает.
Решение: использовать DataAdapter (Пример).
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 07.05.2011, 15:15   #6
Mystery_Planet
 
Регистрация: 06.05.2011
Сообщений: 7
По умолчанию

вот смотрите, с вашими советами:
Код:
 p1.Value = q;
            con.Open();           
            try
            {
                cmd.ExecuteReader();
                SqlDataReader reader = cmd.ExecuteReader();
                SqlDataAdapter dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = cmd;
                DataSet ds = new DataSet();
                dataAdapter.Fill(ds, "TimeTable");
                timeTableDataGridView.DataSource = ds.Tables["TimeTable"].DefaultView;
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("Такого рейса нет!");
            }
Но как совместить и как то синхронизовать адаптер и ридер?)))
И что написать вместо "TimeTable" чтобы выводилось только то, что нашла прога через запрос?)
Mystery_Planet вне форума Ответить с цитированием
Старый 07.05.2011, 15:38   #7
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Но как совместить и как то синхронизовать адаптер и ридер?)))
Не надо совмещать, адаптер - это обертка над ридером, которая позволяет получать данные сразу в DataTable. По ссылке же был пример.
Код:
            p1.Value = q;
            con.Open();           
            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = cmd;
                DataTable dt = new DataTable();
                dataAdapter.Fill(dt);
                timeTableDataGridView.DataSource = dt;
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("Такого рейса нет!");
            }
Цитата:
И что написать вместо "TimeTable" чтобы выводилось только то, что нашла прога через запрос?)
В таблице и отобразится то, что вернул запрос.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 07.05.2011, 23:45   #8
Mystery_Planet
 
Регистрация: 06.05.2011
Сообщений: 7
По умолчанию

Спасибо! Спасибо! Всё работает!! Daramant =********
Mystery_Planet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не выводит javascript misher JavaScript, Ajax 2 12.01.2011 17:47
Не выводит символы MattShepard Общие вопросы C/C++ 2 12.01.2011 11:07
не выводит очередь margaritachka Общие вопросы C/C++ 0 10.05.2010 19:09
Не выводит на монитор and77k Общие вопросы C/C++ 2 27.11.2009 10:28
TwebBrowser - не выводит картинки(( DenRapOr Компоненты Delphi 1 16.05.2009 20:41