Transfert de données entre deux treeview
Bonjour,
Je connait le principe de fonctionnment de l'échange de données entre 2 listbox au moyen de deux flêches.
J'ai fait un petit exemple avec un updatepanel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple" >
<asp:ListItem Text="val1" Value="val1"></asp:ListItem>
<asp:ListItem Text="val2" Value="val2"></asp:ListItem>
<asp:ListItem Text="val3" Value="val3"></asp:ListItem>
<asp:ListItem Text="val4" Value="val4"></asp:ListItem>
</asp:ListBox>
</ContentTemplate>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertGauche"/></Triggers>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertDroit"/></Triggers>
</asp:UpdatePanel>
<asp:ImageButton ID="TransfertGauche" runat="server"
ImageUrl="/Images_Projet/Images/TransfertGauche.png" width="20" height="20" onclick="TransfertGauche_Click"
/> <br /><br />
<asp:ImageButton ID="TransfertDroit" runat="server"
ImageUrl="/Images_Projet/Images/TransfertDroit.png" width="20" height="20" onclick="TransfertDroit_Click"
/>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox2" runat="server" SelectionMode="Multiple" ></asp:ListBox>
</ContentTemplate>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertGauche"/></Triggers>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertDroit"/></Triggers>
</asp:UpdatePanel> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| protected void TransfertGauche_Click(object sender, ImageClickEventArgs e)
{
if (!ListBox2.GetSelectedIndices().Length.Equals(0))
{
ListBox1.Items.Add(ListBox2.SelectedItem);
ListBox2.Items.Remove(ListBox2.SelectedItem);
}
}
protected void TransfertDroit_Click(object sender, ImageClickEventArgs e)
{
if (!ListBox1.GetSelectedIndices().Length.Equals(0))
{
ListBox2.Items.Add(ListBox1.SelectedItem);
ListBox1.Items.Remove(ListBox1.SelectedItem);
}
} |
Ce principe marche bien pour les listbox.
Maintenant, je voudrais réaliser la même chose en remplacant les deux listbox par deux treeview.
Mes treeview sont définis comme cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <asp:UpdatePanel ID="UpdatePanel5" runat="server">
<ContentTemplate>
<asp:TreeView ID="ToutesReferencesNominatives" runat="server" ImageSet="Simple"
NodeIndent="10">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#DD5555" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#DD5555"
HorizontalPadding="0px" VerticalPadding="0px" />
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
<Nodes >
<asp:TreeNode Text="Références nominatives" NavigateUrl="" Expanded="False">
<asp:TreeNode Text="ISO 14001 - Normes environnementales" NavigateUrl="" Expanded="False" >
<asp:TreeNode Text="ISO 14001 - 4.1 - Exigences générales"
Value="ISO 14001 - 4.1 - Exigences générales"></asp:TreeNode>
<asp:TreeNode Text="ISO 14001 - 4.2 - Politique environnementale"
Value="ISO 14001 - 4.2 - Politique environnementale"></asp:TreeNode>
<asp:TreeNode Text="ISO 14001 - 4.3 - Planification "
Value="ISO 14001 - 4.3 - Planification " Expanded="False">
...
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:ImageButton ID="TransfertGauche" runat="server"
ImageUrl="/Images_Projet/Images/TransfertGauche.png" width="20" height="20" onclick="TransfertGauche_Click1"
/> <br /><br />
<asp:ImageButton ID="TransfertDroit" runat="server"
ImageUrl="/Images_Projet/Images/TransfertDroit.png" width="20" height="20" onclick="TransfertDroit_Click1"
<asp:UpdatePanel ID="UpdatePanel6" runat="server">
<ContentTemplate>
<asp:TreeView ID="MesReferencesNominatives" runat="server" ImageSet="Simple" NodeIndent="10" > </asp:TreeView>
</ContentTemplate>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertGauche"/></Triggers>
<Triggers><asp:AsyncPostBackTrigger ControlID="TransfertDroit"/></Triggers>
</asp:UpdatePanel> |
J'ai commencé à remplir mes fonctions de passage :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| protected void TransfertGauche_Click1(object sender, ImageClickEventArgs e)
{
ToutesReferencesNominatives.Nodes.Add(MesReferencesNominatives.SelectedNode);
MesReferencesNominatives.Nodes.Remove(MesReferencesNominatives.SelectedNode);
}
protected void TransfertDroit_Click1(object sender, ImageClickEventArgs e)
{
MesReferencesNominatives.Nodes.Add(ToutesReferencesNominatives.SelectedNode);
ToutesReferencesNominatives.Nodes.Remove(ToutesReferencesNominatives.SelectedNode);
} |
Par contre, à partir de là, je rencontre quelques interrogations :
-Est-il possible de rendre sélectionnable les éléments du treeview comme c'est possible dans une listbox et si oui comment ?
-Comment déterminer le nombre d'éléments sélectionnés ?
Est-ce que quelqu'un saurait m'éclairer sur le sujet ?
Merci.