asp.net дерево css адаптер selectedNode имеет значение null? - PullRequest
1 голос
/ 22 октября 2009

Я только что переключился на использование адаптеров CSS для моего элемента управления TreeView на одной из моих страниц ASPX. Теперь по какой-то причине я не могу использовать метод SelectedNode, кроме как в моем событии OnClick (). ВСЕ другие события показывают, что SelectedNode НЕДЕЙСТВИТЕЛЕН. В настоящее время я использую кучу невидимых меток для хранения информации о дереве каждый раз, когда кто-то нажимает на узел. Очень, очень, очень неправильный способ использовать этот элемент управления. В чем секрет получения контроля в коде за включенными адаптерами CSS?

1 Ответ

1 голос
/ 26 октября 2009

Адаптер для элемента управления TreeView имеет некоторую обработку состояния представления, но вы правы, свойство выбранного узла при обратной передаче равно нулю.

Если вы наведите курсор мыши на корневой узел, строка состояния в браузере покажет что-то вроде:

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

Вы можете поймать аргумент события в коде, который описывает узел, к которому вы обращаетесь, и его значение в виде строки типа «узел \ значение».

        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", когда он выполняет визуализацию.

Тем не менее, может быть лучший способ сделать это ...

...