|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
Есть TreeView (картинка) в каждую node записываю что то типа: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Сижу и никак не соображу как пройтись циклом по родительским узлам, чтобы добавить их в запрос с параметрами Не хочется колхозить титаническую конструкцию с огромным количеством if, хотелось бы что то типа: Код: c# 1.
Если по картинке, то тут надо добавить три параметра 273, январь, 2018 (соответственно количество параметров при разных кликах всегда разное, от 1 до 7) с текущим узлом понятно Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
т.е. кол-во .Parent всегда разное и как это описать в цикле? хотел через это попробовать Код: c# 1.
но тоже кол-во .Nodes разное FindNode не подходит. Он ищет по name. А у меня все node на каждом уровне получаются с одинаковым именем Я где то туплю или надо совершенно по другому подходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 11:59 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
Как я понял, вам нужно подняться по дереву к корневому элементу. Если наоборот, то тогда лучше делать рекурсивно, если рекурсивность не очень большая делать примерно так: Код: c# 1. 2. 3. 4. 5. 6. 7.
Как только текущий элемент станет Null, это значит у него больше нет родителей. Если строка большая, то лучше использовать StringBuilder, он будет работать быстрее и жрать меньше памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 12:34 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
Roman MejtesКак я понял, вам нужно подняться по дереву к корневому элементу. Именно это и нужно. Можно и наоборот, не принципиально только у меня почему то он не переходит на уровень выше Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
у меня бесконечно добавляет только родительский, т.е 273 январь январь январь январь ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 13:14 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
затупил Код: c# 1.
Спасибо за пример. Все работает ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 13:26 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
Если не сложно, то можно еще пример с:Roman MejtesЕсли строка большая, то лучше использовать StringBuilder, он будет работать быстрее и жрать меньше памяти Тоже интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 13:28 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Суть в том, что строка в C# это иммутейбл (imutable) класс. Иммутейбл означает, что состояние объекта невозможно изменить, можно только создать новый класс с новым состоянием. Проще говоря объявив переменну string A = "Value1", а затем объединив её с другой строкой A += "AddText", вы создаете 3 объекта: "Value1", "AddText" и "Value1AddText", в случае с StringBuilder, этого не происходит, так как он просто сохраняет все строковые переменным в список (цепочку) и после того как вы вызываете ToString() объединяет их. Это сильно экономит ресурсы процессора и памяти, потому как при каждой конкатинации строк, ему не нужно создавать новый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 18:04 |
|
Как циклом пройтись по treeView?
|
|||
---|---|---|---|
#18+
p.s. использовать его нужно только если таких объединений много и они происходят в цикле, если нужно канкатинировать 2 строки использовать stringbuilder для этого не нужно, эффект будет обратным ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2018, 18:06 |
|
|
start [/forum/search_topic.php?author=%D0%A3%D1%82%D0%BE%D1%87%D0%BD%D1%8F%D1%8E%D1%89%D0%B8%D0%B9&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 441ms |
total: | 610ms |
0 / 0 |