Xml в TreeView со связью данных

Стартовая страница Форумы Разработка и интеграция Xml в TreeView со связью данных

Просмотр 15 сообщений - с 1 по 15 (из 34 всего)
  • Автор
    Сообщения
  • #32953
    manjey73
    Участник

    Вроде простая задачка, но поиском ничего толкового не нашел.
    Нашел код с рекурсией но… НО-О-О один мой файлик считывает ШЕСТЬ минут…

    про связь данных (Binding) я вообще молчу, не нахожу толковых примеров для WinForms вообще. Облизнулся на Студию1 (там по аглицки) но стоит денег… Что там внутри даже не представляю.

    Кому нужен будет файлик для примера, на котором тестю, выложу куда-нибудь, если интересно.

    может есть у кого наработки для произвольных файлов xml ??? то есть чтобы не создавать классов сериализации и т.д.

    #32954
    Mikhail
    Модератор

    То есть нужно по XML файлу заполнить TreeView?
    При заполнении TreeView нужно использовать методы BeginUpdate и EndUpdate.

    #32956
    manjey73
    Участник

    Да, заполнить TreeView.

    Нашел где зарыта собака такой скорости, это чтение атрибутов xml файла в виде текстовой строки.
    В большинстве примеров используется такой подход. Сейчас атрибуты пихаю в Node.Tag и достаточно быстро все.

    за пару секунд читает. Но проблема в том, что видел реализации в ПО, где этот же файл открывается в дереве, в котором присутствуют в том числе и имена Атрибутов в дереве.
    Вот как так-то?

    #32957
    JurasskPark
    Участник
    #32958
    manjey73
    Участник

    Я боюсь это не то. Ибо там типизированные данные в принципе, разница всего лишь в количестве.
    Если xml файл строго один, прекрасно. Но если xml файлы разные? тут только рекурсия и ничто иное. Других путей вроде нет, когда неизвестно количество.

    Потому что для сериализации мы создаем типизированные данные (классы) но это уже потом.

    #32959
    manjey73
    Участник

    Интересный момент, 1.80 секунды это измерение секундомером при подключении по RDP
    Сегодня запустил будучи дома, мой файл открыло и построило дерево меньше секунды.
    Мне осталось только правильно дерево нодов TreeView построить, а то сейчас чуть некорректно оно строится. Не соответствует Xml файлу.

    • Этот ответ был изменен 1 месяц назад от manjey73.
    #32974
    Mikhail
    Модератор

    Нужно найти, в каком классе и методе тормозит. В VS есть средства для этого относительно простые. Ссылка

    #32977
    manjey73
    Участник

    Тормозит обычно на текстовых вещах, а, еще когда при тестировании выводишь в ListBox например.
    В принципе чтение моего файла за 0,5-0,7 секунд для меня приемлемо.
    Там строк 900 то из мне нужных, остальные занимают меньше.

    Я собственно код чтения уже почти причесал… Теперь запись обратно в xml осталась 🙂
    Ну и украшательства с редактированием, но это уже интерфейсная часть.

    а на маленьких файлах конфигурации в моих драйверах так вообще 30-40 мсек. Что вообще незаметно.

    • Этот ответ был изменен 1 месяц назад от manjey73.
    #32979
    manjey73
    Участник

    После добавления чтения комментариев стало 1,3-1,4 секунды. В принципе тоже приемлемо.
    Не минуты же.

    #32980
    manjey73
    Участник

    полный размер

    Вот пример открытия шаблона Modbus. Вроде и структуру поймал 🙂

    #32981
    manjey73
    Участник

    Смысл не привязывать чтение xml файла к конкретному случаю, чтобы использовать код один и тот же.
    А уже тратить время только на красивости. иконки тех или иных Нодов уже в интерфейсной части.

    #32982
    Mikhail
    Модератор

    Как будет использоваться построенное дерево документа?

    #32983
    manjey73
    Участник

    Для настройки параметров драйверов во View.

    Смысл упростить немного создание меню, когда нужно иметь дерево. Сам драйвер (Logic) при этом может использовать уже сериализацию в классы, а можно так же использовать этот же код. а, блин, в драйвере нет же WinForms….

    Вариантов связи для WindowsForms я так и не нашел. Чтобы меняя что-то в TreeView сразу менялось в xml. Целые танцы с бубном какие-то…

    • Этот ответ был изменен 1 месяц назад от manjey73.
    #32989
    Mikhail
    Модератор

    Придётся обрабатывать события на действия пользователя, чтобы отображать изменения в дереве и менять XML.

    Вы не пробовали использовать для своего драйвера универсальный интерфейс, который есть например, в драйвере MQTT?

    #32990
    manjey73
    Участник

    MQTT не копал ещё.
    Понятие универсальности ведь относительны.
    Цель собственно какая?
    Например для определенного драйвера я руками делаю xml для конфигурации, создаю под него список классов для сериализации. Вот потом чтобы не работать с этими же классами во View и хочу сделать универсальное решение в случае использования древовидного варианта настроек. Чтобы вставил готовый код и уже можно было настраивать. А не писать под каждый определенный драйвер большую часть снова. И типа в продакшн 😀
    А уже потом пилить красоту с иконками, окнами и т.д. на этой основе уже под определенный драйвер.
    Опять же, идея приглашать в соавторство, кто красоту наведёт 😀

Просмотр 15 сообщений - с 1 по 15 (из 34 всего)
  • Вы должны авторизироваться для ответа в этой теме.