2014-12-17 2 views
0

У меня есть элемент управления treeview с флажком для каждого узла. Каждый узел представляет собой отдел. Я хочу, чтобы основной отдел был выбран по умолчанию с его подразделением. Ниже приводится контрольный код:Родительский узел Treeview должен выбирать с дочерним узлом по умолчанию в Treeview

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:LinkButton runat="server" ID="lnkSelectAllDepartments" Text="Select All" OnClick="lnkSelectAllDepartments_Click" Font-Bold="false" Font-Underline="true"></asp:LinkButton>| 
      <span class="labelText" style="font-weight:bold"> | </span> 
       <asp:LinkButton runat="server" ID="lnkDeselectAllDepartments" Text="Deselect All" OnClick="lnkDeselectAllDepartments_Click" Font-Bold="false" Font-Underline="true"></asp:LinkButton> 
        <br /> 
        <br /> 
         <asp:CheckBoxList ID="listDepartment" runat="server" Height="120px" RepeatDirection="Vertical" RepeatLayout="Flow"> </asp:CheckBoxList> 
         <asp:TreeView ID="tvDepartments" runat="server" ShowCheckBoxes="All" ShowExpandCollapse="true" ExpandDepth=0 NodeStyle-ForeColor="Black" ></asp:TreeView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

И ниже код для кода позади:

/*Added for TreeView control...*/ 
string rootDepartmentName = ConfigurationReader.ParentDepartmentName;/
if (lstDepartmentDetails.Any(item => item.Name.CompareString(rootDepartmentName) && item.ParentName.IsNullOrEmpty())) 
{ 
    clsRelFilter rootDepartment = lstDepartmentDetails.FirstOrDefault(item => item.Name.CompareString(rootDepartmentName) && item.ParentName.IsNullOrEmpty()); 
    TreeNode ParentNode = new TreeNode(rootDepartment.Name, rootDepartment.Uri); 

    AddChildDepartmentsToNode(ParentNode, rootDepartment, lstDepartmentDetails); 
    tvDepartments.Nodes.Add(ParentNode); 
} 

ответ

0

Это классическая задача любого элемента управления на основе дерева. Вы можете использовать некоторую форму рекурсии, так что при выборе каждого родительского флажка вы будете рекурсивно проходить через все дочерние элементы этого узла (вплоть до уровня листа) и пометить также свои флажки. Сначала вы можете идти глубже, пока у вас не будет потомков, затем вернитесь к родителям и так далее.

Кроме того, вы также должны думать о предках. Что делать, если все дочерние элементы узла не отмечены, следует ли снять флажок с родителя? Или, если вы проверяете потомка, вы должны идти вверх по дереву и также проверять узлы-предки?

Смежные вопросы