выбрать узел дерева после постбэка - asp.net - PullRequest
0 голосов
/ 27 октября 2010

Я использую древовидный элемент управления.Я строю дерево динамически.иногда дерево становится больше, и полоса прокрутки вниз должна видеть все дерево.Пользователь может выбрать узел из дерева.если выбран один узел, я меняю цвет узла со стороны сервера.

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

Мне нужно показать выбранный узел после обратной передачи.Как я могу это сделать?

Я использую c # и asp.net

Ответы [ 2 ]

1 голос
/ 21 апреля 2012

С помощью jquery мы можем отправить идентификатор выбранного узла в строку запроса и в документе. Уже можем прочитать и выделить этот узел. Посмотрите на код:

Код за кодом клика:

public void TreeView1_OnClick(Object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(
        Page,
        Page.GetType(),
        "HighlightSelectedNode",
        "HighlightSelectedNode();",
        true
    );
}

и JavaScript:

<script type="text/javascript" language="javascript">
    function HighlightSelectedNode() {
        var selectedNodeID = $('#<%= TreeView1.ClientID %>_SelectedNode').val();
        if (selectedNodeID != "") {
                document.location.href = "http://" + window.location.host
                    + window.location.pathname
                    + "?Node=" + selectedNodeID;
                return false;
        } else {
            // alert("Not found");
        }
    }

    // Highlight active node on pageload.
    $(document).ready(function () {
        var querystring = location.search.replace('?', '').split('&');
        var queryObj = {};
        for (var i = 0; i < querystring.length; i++) {
            var name = querystring[i].split('=')[0];
            var value = querystring[i].split('=')[1];
            queryObj[name] = value;
        }
        var nodeID = queryObj["Node"];
        $('#' + nodeID).css({ 'background-color': '#888'});              
    });
</script>
0 голосов
/ 27 октября 2010

Вы можете использовать панель обновления, чтобы обойти эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...