Hierarchiczne TreeView z listy obiektów
Wielokrotnie stawałem przed problemem zbudowania hierarchicznego TreeView z listy obiektów.
Pisanie odpowiednich foreach, budowanie całej hierarchii TreeNode’ów stało się za którymś razem męczące.
Parę dni temu doczytałem o TreeNodeBindings i postanowiłem chociaż w części zautomatyzować to zadanie. Najpierw przyszło mi na myśl bezpośrednie podpięcie listy do DataSource całego TreeView, jednak jak szybko się okazało kolekcja taka wymaga implementacji interfejsu IHierarchicalEnumerable a jej elementy dodatkowo IHierarchyData.
Bardzo szybko zapadła więc decyzja – nie tędy droga ;-) Chciałem rozwiązania dość uniwersalnego, które nie będzie wymagało dodatkowych działań w klasach.
Jak więc “oszukać” i podłączyć jako DataSource obiekt, który automatycznie odwali za nas częśc pracy? Więc odpowiedź okazała się dość banalna – XML.
Wystarczy zbudować w pamieci obiekt XML, składający się wyłącznie z tych danych, które chcemy pokazywać na drzewie i właśnie jego podłączyć jako DataSource, używając odpowiednio ustawionego TreeNodeBindings.
Read more
Dziś napotkałem banalny wydawać by się mogło problem, ale może komuś oszczędzi grzebania.
Miałem na stronie dwie listy – po lewej długą, po prawej krótką. Wykonanie akcji na lewej liście miało przeładowywać prawą. Realizacja “problemu” oparta o UpdatePanele, ustawione jako conditional. Nie wykonywał się więc postback całej strony a tylko asynchroniczne postbacki wybranych elementów.
Problem polegał na tym, że użytkownik będąc na końcu długiej listy i wywołując akcję nie widział krótkiej listy i nie widział, czy cokolwiek się działo. Najlepszym sposobem byłoby więc JavaScriptowe przewinięcie strony na górę po wykonaniu akcji…


