У меня есть общая папка на сервере, которая содержит вложенные вложенные папки.
В различных папках Leaf содержатся изображения.
Я хотел создать файловый браузер на стороне сервера, который будет отображать изображения для пользователя.
Я использую ASP.NET TreeView Control.
Я создаю узлы дерева, используя PopulateOnDemand.
Если пользователь нажимает на конечный каталог, я хочу, чтобы изображения в этой папке отображались в элементе управления DataList.
Проблема заключается в том, что когда я щелкаю по узлу поддерева (после того, как развернул его родительский узел)
Все развернутое поддерево исчезает и только родительский узел отображается без знака + рядом с ним !!
(я установил для свойства TreeView PopulateNodesFromClient значение true)
Может кто-нибудь сказать мне, в чем проблема ??
Спасибо
Вот код:
<asp:TreeView ID="TreeView1" runat="server" AutoGenerateDataBindings="False"
onselectednodechanged="TreeView1_SelectedNodeChanged"
ontreenodepopulate="TreeView1_TreeNodePopulate">
</asp:TreeView>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string path = Server.MapPath(".");
PopulateTopNodes(path);
}
}
private void PopulateTopNodes(string pathToRootFolder)
{
DirectoryInfo dirInfo = new DirectoryInfo(pathToRootFolder);
DirectoryInfo[] dirs = dirInfo.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
TreeNode folderNode = new TreeNode(dir.Name,dir.FullName);
if (dir.GetDirectories().Length > 0)
{
folderNode.PopulateOnDemand = true;
folderNode.Collapse();
}
TreeView1.Nodes.Add(folderNode);
}
}
protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
if (IsCallback == true)
{
if (e.Node.ChildNodes.Count == 0)
{
LoadChildNode(e.Node);
}
}
}
private void LoadChildNode(TreeNode treeNode)
{
DirectoryInfo dirInfo = new DirectoryInfo(treeNode.Value);
DirectoryInfo[] dirs = dirInfo.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
TreeNode folderNode = new TreeNode(dir.Name, dir.FullName);
if(dir.GetDirectories().Length>0){
folderNode.PopulateOnDemand = true;
folderNode.Collapse();
}
treeNode.ChildNodes.Add(folderNode);
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
// Retrieve the images here
}