ASP.NET Treeview控件始终将节点附加到CheckedNodes列表

时间:2012-03-20 13:23:55

标签: c# asp.net treeview

我的页面上有一个ASP.NET树视图。在我的代码隐藏中,我有以下方法:

public string GetSelectedTreeValues(TreeView tv)
    {
        string taxVal = string.Empty;

        StringBuilder textBuilder = new StringBuilder();
        string lists = string.Empty;
        string cleanedlists = string.Empty;

        try
        {
            TreeNodeCollection checkedNodes = tv.CheckedNodes;
            foreach (TreeNode tn in checkedNodes)
            {
                lists = textBuilder.Append(tn.ValuePath + ",").ToString();
            }

            // removing any trailing commas
            cleanedlists = lists.Substring(0, lists.Trim().Length - 1);
        }
        catch (Exception ex)
        {
            new ApplicationException("Error: Getting Tree Nodes", ex);
        }
        return cleanedlists;
    }

问题是当我进行回发时,如果我更改了我选择的值,它们总是追加到值列表。我认为值列表应清除,然后重置为新值。

我已经逐步完成了代码,发现CheckedNodes属性总是将我检查的节点附加到列表而不删除未经检查的节点。

1 个答案:

答案 0 :(得分:0)

您可以发布执行树视图绑定的代码部分吗?

在页面生命周期中的哪一点是绑定和GetSelectedTreeValues被调用?

如果可以,您应该用

替换try块内容
        cleanedlists = string.Join(",", tv.CheckedNodes.Cast<TreeNode>().Select(tn => tn.ValuePath).ToArray());