Как подходить к привязке данных BindingList из списков к DataGridView в C #? - PullRequest
0 голосов
/ 09 августа 2011

Я пишу программу, которая работает как словарь в стиле Excel.По сути, это позволяет пользователю добавлять строки, редактировать строки, осуществлять поиск по ним и так далее.Я использую его для хранения и изучения словарного запаса для иностранных языков.Я получил и запустил версию, которой я вполне доволен.Он использует BindingList в качестве источника данных для DataGridView, чтобы отслеживать изменения и записывать их обратно в BindingList, который я использую для хранения всего словаря, а сам список состоит из пользовательского класса I с именем «Term», которыйимеет свойства для "английского слова", "испанского слова", "примеров" и т. д.Что он не делает, так это позволяет пользователю настраивать поля, и вот тут-то и возникает моя проблема. Это довольно жестко закодировано в том, что даже если я изучаю испанский или французский, класс Term будет использоватьсвойство "Kanji" с японского.

Я хочу иметь возможность указать тип пользователя, в каких полях они хотят, чтобы словарь отображал и отслеживал - в основном, они должны иметь возможность переименовывать и добавлять/ удалить столбцы из DataGridView.Моей первой мыслью было реализовать это в виде списка, в котором хранятся имена полей (и, соответственно, их количество, используя длину списка).Тогда у меня будет класс Word, который имеет свойство List, и каждая строка в списке представляет одно из полей.Затем я создаю BindingList этого класса Word, в результате чего у меня остается BindingList of Lists.

Когда я пытаюсь привязать свой список списков к моему DataGridView, сетка становится пустой - очевидно, она понятия не имеет, какЯ хочу, чтобы данные отображались, и мне очень трудно понять, как их передать.Я даже не уверен, что мой подход к созданию списка списков является хорошим способом реализации настраиваемых полей, но это лучшее, что я мог придумать.В любом случае, может ли кто-нибудь порекомендовать способ подойти к этому, который позволяет мне добавлять поля в таблицу, а также отслеживать изменения и вставлять их обратно в исходный источник?Мне нужно, чтобы сетка использовалась в качестве инструмента редактирования, чтобы пользователь мог не только добавлять новые элементы, но и изменять существующие.Это личный проект, но он сводит меня с ума.Я был до 5 утра прошлой ночью, пытаясь понять это, и пришел с пустыми руками.Большое спасибо за чтение!

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Думаю, вам будет интересен этот класс:

http://www.codeproject.com/KB/grid/DGVColumnSelector.aspx

Позволяет пользователю динамически отображать, какие столбцы отображаются в DataGridView

0 голосов
/ 09 августа 2011

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

Если бы мне пришлось сделать DataGridView, подобный Excel, я бы использовал массив.Я хотел бы создать массив, скажем, 256 на 256 и поместить его в качестве источника данных.Затем, после того как пользователь отредактирует, вы читаете всю DataGrid и переписываете, если она отличается от массива, который у вас был изначально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...