Автор Тема: ASP сохранение и восстановление лифта дерева  (Прочитано 922 раз)

AlexNZ

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Приложение имеет дерево меню слева и окно просмотра данных выбранного пункта дерева справа. Навигация по дереву - кнопками <> и кликом по любому пугкту. При увеличении дерева до величины, превышающей вертикальный размер окна возникла проблема невидимости выбранного пункта в дереве при использовании кнопок нвигации. Проблема была решена установкой лифта дерева так, чтобы был виден выбранный пункт. Однако плавание лифта оказалось не совсем удобным при использовании выбора пункта в дереве. Было найдено, возможно, интересное решение - при использовании кнопок навигации плавное движение лифта, а при выборе пункта дерева кликом - сохранение и восстановление положения лифта.
    function vspos() {
       vsoffset = $('.leftmenu').scrollTop();
            var links = document.getElementById("<%=TreeView1.ClientID %>").getElementsByTagName("a");
            for (var i = 0; i < links.length; i++) {
                links.setAttribute("href", links.getAttribute("href") + '&vsoffset=' + vsoffset);
            }
      }
Эта функция вызывается по событию Onclick div дерева. В ней во все ссылки дерева добавляется ключевой параметр vsoffset со значением положения лифта дерева. Далее происходит преход по выбранной ссылке и при обновлении страницы проверка ключевого параметра vsoffset

    $(document).ready(function () {
   function $_GET(key) {
   var s = window.location.search;
   s = s.match(new RegExp(key + '=([^&=]+)'));
   return s ? s[1] : false;
   }
   if ($_GET('vsoffset')>0) {
      vsoffset = $_GET('vsoffset');
      $('.leftmenu').scrollTop(vsoffset);
   }
   else {
           var destination = $(".selected").offset().top;
           var dest_mod = destination - 165;
        $('.leftmenu').animate({ scrollTop: dest_mod }, 1100);
           return false;
   }
   });