DataGridView привязан к вложенному словарю - PullRequest
0 голосов
/ 22 апреля 2019

Я пытался увидеть это: DataGridView привязан к словарю

Но это не совсем то, что я ищу, поэтому я здесь.

Iиметь такой словарь (просто пример того, как он выглядит):

{
    "file": 
    {
        "var-type": 
            {
                "var1": 
                       {
                           "description": "the description here",
                           "length": "the length here",
                           "type": "the type here",
                           "line": "the line number here",
                       }
            }
    }
}

И хотел бы иметь DataGridView (в реальном времени, таким образом, связывая его), который выглядит так:

+------+-----------------+-----------------+---------------+
| Name |   Description   |     Length      |     Type      |
+------+-----------------+-----------------+---------------+
| var1 | the description | the length here | the type here |
+------+-----------------+-----------------+---------------+

Этот DataGridView будет в TabPage (внутри TabController, а имя этой вкладки будет var-type)

Сначала у меня был словарь, и каждыйКогда пользователь хочет получить DataGridView, DataGridView будет выполняться снова и снова с нуля.

Поэтому, когда пользователь что-то меняет, ему приходится заново открывать DataGridView или обновлять его вручную вДля того, чтобы увидеть новые изменения.Я не хочу этогоПоэтому я попытался иметь DataTables для каждого var-type (и использовать Dictionary в качестве DataTable коллекции, и пользователь получал изменения в режиме реального времени, когда они что-то редактировали.

Это работало довольно хорошоНо когда дело доходит до редактирования информации определенного var, мне нужно будет использовать .Select() (и я не могу сохранить номер строки в той же DataTable). Я хотел бы избежать этого, поэтому я вернулся к одномуИ снова я услышал, что словарь гораздо более легкий.

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

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

Просто еили запись;да, это парсерИ большое спасибо!

1 Ответ

1 голос
/ 22 апреля 2019

Используйте одно из следующего:

            DataTable dt = new DataTable();

            Dictionary<string, DataRow> dict1 = dt.AsEnumerable()
                .GroupBy(x => x.Field<string>("Name"), y => y)
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

            Dictionary<string, List<DataRow>> dict2 = dt.AsEnumerable()
                .GroupBy(x => x.Field<string>("Name"), y => y)
                .ToDictionary(x => x.Key, y => y.ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...