Элемент управления ASP.NET Treeview всегда добавляет узлы в список CheckedNodes - PullRequest
0 голосов
/ 20 марта 2012

На моей странице есть древовидная структура 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 голосов
/ 20 марта 2012

Не могли бы вы опубликовать ту часть кода, которая связывает древовидную структуру?

В какой момент в течение жизненного цикла страницы выполняется привязка и вызывается GetSelectedTreeValues?

Если вы можете, вы должны заменить содержимое блока try на

        cleanedlists = string.Join(",", tv.CheckedNodes.Cast<TreeNode>().Select(tn => tn.ValuePath).ToArray());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...