попытка загрузить данные в сетку данных приводит к сбоям

1

У меня есть простое приложение DB, которое позволяет пользователю выполнять поиск в таблице MSSQL на определенных условиях, а затем экспортировать найденные результаты в файл журнала.

Я столкнулся с странной ошибкой, которая заставит приложение замораживаться, но только если я запускаю сборку "Release" и никогда не запускаю сборку Debug внутри визуальной студии. Я могу запускать всевозможные запросы без проблем. Однако если первый запрос, который я запускаю, возвращает 0 результатов, то самый следующий запрос, который возвращает какой-либо результат, всегда будет терпеть неудачу при попытке загрузить результаты из данных в представление datagrid.

Я почти уверен, что он рушится из-за того, что я не придерживаюсь лучшей практики на моей стороне, но я не совсем понимаю, почему.

Здесь усеченные фрагменты кода.

//Declared in the start of the class
DataTable DBResults = new DataTable();


//This is run inside of a method called by a background worker.
DBResults.Clear();

SqlDataAdapter da = new SqlDataAdapter(sqlQuery, SQLConnection);
SqlConnection SQLCon = new SqlConnection(getConnectionString());

//This is wrapped inside a try/catch/finally.
SQLCon.Open();
da.Fill(DBResults);
SQLCon.Close();

//Finally, push the data into the Datagridview inside of the form.
//This is the line that will always freeze the app when running a Final build, but not a debug build.
dataGridView_Results.DataSource = new DataView(DBResults);

this.dataGridView_Results.Refresh();


//I discovered that if I changed the crashing line to copy instead, it won't crash:
dataGridView_Results.DataSource = new DataView(DBResults.Copy());

Я предполагаю, что это потому, что у Datasource все еще есть указатель на DbResults. Но странно, что это не вызывает проблемы, если у меня есть результаты, только если первый поиск возвращает 0 результатов. Это visual studio 2012.NET 4, если это имеет значение вообще.

  • 0
    Вы пробовали dataGridView_Results.DataSource = DBResults?
  • 0
    Я отредактировал ваш заголовок. Пожалуйста, смотрите: « Должны ли вопросы включать« теги »в их заголовки? », Где консенсус «нет, они не должны».
Показать ещё 1 комментарий
Теги:
datatable
datagridview
visual-studio-2012

1 ответ

0

Etan, вы должны присвоить таблицу данных непосредственно свойству datasource объекта datagridview, не выполняя новое. Это должно быть так:

dataGridView_Results.DataSource = DBResults;

Я действительно мало знаю о свойствах копии строки ниже.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню