在回发后选择treeview节点 - asp.net

时间:2010-10-27 11:07:03

标签: c# asp.net treeview

我正在使用树视图控件。我动态地构建了树。有时树会变大,向下滚动条需要看到整棵树。  用户可以从树中选择一个节点。如果选择了一个节点,我将从服务器端更改节点的颜色。

我的问题是,如果用户选择了树中位于底部的节点(表示用户使用向下滚动条查看该节点),则在回发后显示树的顶部。以查看所选节点用户需要使用向下滚动条。

我需要在回发后显示所选节点。我怎么能这样做?

我正在使用c#和asp.net

2 个答案:

答案 0 :(得分:1)

在jquery的帮助下,我们可以将选定的节点id发送到查询字符串和document.ready上,我们可以回读并突出显示该节点。 看看代码:

onclick代码背后的代码:

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>

答案 1 :(得分:0)

您可以使用更新面板解决此问题。