Сделал собственный SiteMapProvider, а контролы почему-то пустые

vbnet2000
Дата: 27.04.2007 02:07:08
Сам провайдер получился нормально. Я его унаследовал от SiteMapProvider.
Построил нужное мне дерево в Initialize.
За этим деревом провайдер по идее входит всего четырьмя функциями
1.FindSiteMapNode
2.GetChildNodes
3.GetParentNode
4.GetRootNodeCore
Тут GetChildNodes и GetParentNode получаются пустые - провайдер заведомо входит туда когда нужных узлов нету. Собственно узлы возвращаются FindSiteMapNode и дерево целиком GetRootNodeCore.

Эти функции вызываются и работают. Я могу даже в отладчике просмотреть результаты из работы - узлы сформированного мною дерева. Вот на рисунке я захожу аж из контрола SiteMapPath на MasterPage в свой провайдер методом FindSiteMapNode. И он нормально возвращает правильный узел из моего дерева.

НО КОНТРОЛЫ НА СТРАНИЧКЕ ПУСТЫЕ. ПОЧЕМУ? Сижу над этим с шести вечера и ничего найти не могу. Где ж тут грабли?

Сами по себе контролы определены на страничке с указанием имени моего провайдера так.
                    <asp:SiteMapPath ID="SiteMapPath1" runat="server" SiteMapProvider="MySiteMapProvider">
                    </asp:SiteMapPath>
           <asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" StaticDisplayLevels="3">
            </asp:Menu>
            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" SiteMapProvider="MySiteMapProvider" />

И если подключить вместо моего микрософтовский провайдер - контролы все показывают нормально. А с моим ничего не показывают, хотя мой возвращает все необходимые узлы правильно правильно...
vbnet2000
Дата: 27.04.2007 02:41:57
Хотя идея в принципе понятна. Наверное шаблоны надо САМОМУ делать. Никакой автоматики тут просто нет. Но как же тогда стандартный провайдер работает?
Кроме того, имена непонятно какие.
vbnet2000
Дата: 27.04.2007 03:03:28
Во, блин, получилось. Вязаться надо так - <%# DataBinder.Eval(Container, "SiteMapNode.URL") %>
Так же и атрибуты.

Завтра на хомяк выложу STEP-BY-STEP как делать собственные провайдеры.
C...R...a...S...H
Дата: 27.04.2007 11:10:59
Тихо сам с собой веду беседу
----------------------------------------
Knowledge is P...O...w...E...R!
My site
dot_cheater
Дата: 27.04.2007 11:17:30
Плин, стремно: даже зацепицо не зачто... Как мы сратцо-то буим???
vbnet2000
Дата: 27.04.2007 11:44:48
Ну если тебе скучно, может продолжить сраться со мной в моем вчерашнем топике - DlyLohov
dot_cheater
Дата: 27.04.2007 12:01:18
"vbnet2000":
Ну если тебе скучно, может продолжить сраться со мной в моем вчерашнем топике - DlyLohov

Да не мне не скучно, просто обновления накатываю...
Кста: ты никода не выступал в амплуа grexhide или типа таво...
Limonad
Дата: 02.05.2007 18:27:37
Я тут тоже столкнулся с такой проблемой. И у меня решилось при помощи установки свойства PopulateNodesFromClient (т.е. свойство динамической подгрузки данных при нажатии на узел TreeView) если его поставить в false, то всё работает.