我的页面上有一个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属性总是将我检查的节点附加到列表而不删除未经检查的节点。
答案 0 :(得分:0)
您可以发布执行树视图绑定的代码部分吗?
在页面生命周期中的哪一点是绑定和GetSelectedTreeValues被调用?
如果可以,您应该用
替换try块内容 cleanedlists = string.Join(",", tv.CheckedNodes.Cast<TreeNode>().Select(tn => tn.ValuePath).ToArray());