Datagridview с несколькими источниками данных — проблема со столбцом

Я работаю с разными источниками данных, которые имеют разные столбцы. Например, DataTable1 имеет столбцы A, B и C. а DataSource2 имеет столбцы X, Y, Z.

В моем приложении формы Windows я разрешаю пользователю просматривать определенный файл Excel с помощью Format1 (A, B, C) и Format2 (X, Y, Z). когда я загружаю первый источник данных1 в виде сетки, он показывает столбцы A, B, C и данные из Excel. Но когда я загружаю Format2. Datagridview сохраняет формат Datasource1 и отображает столбцы (A, B, C, X, Y, Z).

Обратите внимание, что у меня есть общий datagridview для обоих источников данных. Кроме того, я пробовал следовать

DataTable.Clear();
DataTable.Columns.Remove("");
AutoGeneratedColumns=False;

Как убедиться, что datagridview показывает только текущие столбцы, связанные с источником данных, пока пользователь выбирает файл excel.

Источник данных1 - Формат 1 - A,B,C DataSource2 - Формат 2 - X, Y, Z

почему ты настроен AutoGeneratedColumns=False ?

AminRostami 24.07.2019 06:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
256
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это:

Datagridview.Columns.Clear();
Datagridview.Rows.Clear();
Datagridview.Refresh();
Datagridview.DataSource = null; 

Это вряд ли поможет. Проблема в том, что отображаются дополнительные столбцы, которые не нужны. Так что очистка строк ничего не даст. Кроме того, это girdview с привязкой к данным, поэтому изменения в том, что должно быть внесено в отображаемую таблицу данных, а не в саму сетку

Caius Jard 24.07.2019 06:57

Я так не думаю, проблема в том, что Datagridview сохраняет формат из Datasource1 и показывает столбцы (A, B, C, X, Y, Z).

Roxana Sh 24.07.2019 07:03

Ни одно из этих утверждений никоим образом не полезно для человека, задающего вопрос. Когда вы изменяете свойство DataSource DataGridView, оно удаляет все его столбцы и строки и создает новые из нового DataSource. Попробуйте код ARF, если не верите; он ничего не очищает в DGV, он просто меняет источник данных

Caius Jard 24.07.2019 07:29

это работает для меня:

DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
dt1.Columns.Add("A");
dt1.Columns.Add("B");
dt1.Columns.Add("C");

dt2.Columns.Add("X");
dt2.Columns.Add("Y");
dt2.Columns.Add("Z");

dt1.Rows.Add("a", "a", "a");
dt2.Rows.Add("b", "b", "b");

private void Button1_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = dt1;  // set datasource from dt1
}

private void Button2_Click(object sender, EventArgs e)
{
       dataGridView1.DataSource = dt2; // set datasource from dt2
}

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

Caius Jard 24.07.2019 07:00

вы можете использовать from new DataTable() в каждом действии. как еще один мой ответ.

AminRostami 24.07.2019 07:20

Другие вопросы по теме