2012-03-23 6 views
0

У меня есть страница, в которой есть каталог деревьев людей, работающих в этой компании. Первоначально единственным способом открыть узлы было щелкнуть по маленькому +/-, но когда вы доберетесь до последнего уровня, имя человека было там и можно щелкнуть на свою биографию. С тех пор я установил его туда, где текст также расширит узел, но теперь имя больше не доступно для клика. Он по-прежнему имеет вид «ссылки» (синий, подчеркнутый, при наведении курсора на красный), но значок остается неизменным и не поворачивается к пальцу. Заранее спасибо!Проблемы с TreeNodeBinding

Вот код на странице ...

<%@ Control language="C#" Inherits="Modules.PeopleNav.PeopleByAlpha" CodeFile="PeopleByAlpha.ascx.cs" AutoEventWireup="true"%> 
<%@ Register TagPrefix="dnn" TagName="Audit" Src="~/controls/ModuleAuditControl.ascx" %> 
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" 
    ExpandDepth="1" onselectednodechanged="TreeView1_SelectedNodeChanged" OnTreeNodeDataBound="TreeView1_TreeNodeDataBound"> 
    <DataBindings> 
    <asp:TreeNodeBinding DataMember="Person" ValueField="Value" TextField="Name"> 
     </asp:TreeNodeBinding> 
     <asp:TreeNodeBinding DataMember="AlphaBreak" TextField="Name"> 
     </asp:TreeNodeBinding> 
     <asp:TreeNodeBinding DataMember="PeopleAlpha" TextField="Name"> 
     </asp:TreeNodeBinding> 
    </DataBindings> 
</asp:TreeView><br /> 

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Portals/0/Docs/PeopleAlpha.xml"></asp:XmlDataSource> 

И код позади ...

protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) 
{ 
    String sURL = TreeView1.SelectedNode.Value.ToString(); 
    if (sURL.Length > 5) 
    { 
     String sExt = sURL.Substring(sURL.Length - 4, 4); 
     if (sExt == "aspx") 
     { 
      Response.Redirect(sURL); 
     } 
    } 
} 
      protected void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e) 
{ 
    e.Node.SelectAction = TreeNodeSelectAction.Expand; 
} 

ответ

1

Я думаю, вы должны установить свойство NavigateURL узлов:

protected void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e) 
{ 
    e.Node.SelectAction = TreeNodeSelectAction.Expand; 
    e.Node.NavigateUrl = // extract the url from your e.Node.DataItem 
} 

Этот путь, я также считаю, что вам больше не нужен TreeView1_SelectedNodeChanged

+0

Переход осуществляется в XML-файл со всеми листингами. Как связать узлы с XML-файлом динамически? – Peter

+0

Вы должны построить url точно так же, как вы его создаете в TreeView1_SelectedNodeChanged, и оставьте его пустым, когда узел не должен быть доступен для клика – jbl