Здравствуйте, у меня нет большого опыта в программировании, и я не нашел полезной информации по своему вопросу, поэтому мне нужна ваша помощь. Моя цель - создать datagridview, привязанный к ...

0
Linascts 27 Дек 2020 в 18:01

1 ответ

Лучший ответ

Я думаю, ты ошибаешься

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

Поскольку существует набор известных столбцов, вы можете просто поддержать их все, связать их все, поместить их все в свой datagridview, а затем просто сделать их все невидимыми (theColumn.Visible = false), и когда пользователь выберет «добавить» их, просто сделай их Visible=true. Они "выглядят" так, как будто их добавили, но на самом деле они всегда были там, подключены и работают должным образом, просто скрыты.


Я также думаю, что вы неправильно используете свою сетку данных / таблицу / доступ (или, наоборот, трудный путь)

  • Добавьте новый набор данных в свой проект

  • Откройте его, щелкните поверхность правой кнопкой мыши, добавьте адаптер таблицы

  • Пройдите через мастер, выберите строку подключения, сохраните ее, добавьте выбор, который возвращает строки, select * from sometable where id = @id, вызовите методы FillBId / GetDataById, завершите

  • Сохраните набор данных

  • Переключитесь на свою форму, откройте окно Источники данных (меню «Просмотр», «Другие окна»), перетащите узел, представляющий вашу таблицу данных, на форму - появится datagridview вместе с некоторыми другими компонентами, которые будут извлекать и сохранять данные, управлять текущими строками и т. Д.

  • Поместите код в конструктор после InitializeComponent ():

    foreach (DataGridViewColumn c в yourDataGridViewName.Columns) c.Visible = false;

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

  • Обратите внимание на то, как структурирован код серверной части - когда вы помещаете сетку в форму, она тоже записывает некоторый код; вот как загрузить (заполнить) и сохранить (tableadapter.update) db тоже

Не выполняйте итерацию по datagridview, извлекая из него значения; это элемент управления пользовательского интерфейса для отображения и редактирования таблицы данных, к которой он привязан. Если вы хотите получить доступ к значениям, получите его через datatable. Если вы хотите сохранить отредактированные значения, это всего лишь одна строка кода: someTableAdapter.Update(someDataTableNameHere)

0
Caius Jard 27 Дек 2020 в 17:27