1

我刚刚切换到在我的一个 ASPX 页面上为 TreeView 控件使用 CSS 适配器。现在,由于某种原因,除了在 OnClick() 事件中之外,我不能使用 SelectedNode 方法。所有其他事件都显示 SelectedNode 为 NULL。我目前正在使用一堆不可见的标签来存储每次有人单击节点时的树信息。非常非常非常错误地使用这个控件。启用 CSS 适配器后,在代码中获得控制的秘诀是什么?

4

1 回答 1

1

TreeView 控件的适配器确实有一些视图状态处理,但你是对的,选择的节点属性在回发时为空。

如果您将鼠标悬停在根节点上,浏览器上的状态栏将显示如下内容:

    javascript:__doPostBack('controlid', 'eventargument');
//or
    javascript:__doPostBack('tv', 'srootnodevalue\\childnodevalue');

您可以在后面的代码中捕获事件参数,该参数描述您正在访问的节点及其值,如“node\value”之类的字符串。

        if (Request.Form["__EVENTTARGET"] != null && Request.Form["__EVENTARGUMENT"] != null)
        {
            if (Request.Form["__EVENTTARGET"].Equals("tv")) //tv is my treeview control id, and the first parameter in __doPostBack()
                Tv_SelectedNodeChanged(Request.Form["__EVENTARGUMENT"]);
        }


        protected void Tv_SelectedNodeChanged(string argument)
        {
            //process the argument string 'srootnodevalue\childnodevalue'
        }

树视图视图状态似乎通过适配器在呈现时将其表示为 class="AspNet-TreeView-Leaf AspNet-TreeView-Selected" 来了解所选节点。

不过,可能有更好的方法来做到这一点......

于 2009-10-26T05:10:05.330 回答