webForumDet fria alternativet

lista filer

.NET

4 svar · 564 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

försöker bygga en filhanterare, men jag vet inte redigt hur jag ska få ut filerna i GridView:n.

    <asp:TreeView 
        ID="tvMap" 
        runat="server">
    </asp:TreeView>

    <asp:GridView 
        ID="gvFile" 
        runat="server">
        <Columns>
        
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="chkChecked" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>  
            
            <asp:TemplateField HeaderText="Filnamn">
                <ItemTemplate>
                    <asp:LinkButton 
                    ID="lbtnFile" 
                    runat="server" 
                    Text='<%# Eval("filename") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
private void BindTree()
    {
        // tömmer listan
        tvMap.Nodes.Clear();

        string rootFolder = BaseDir;
        TreeNode rootNode = new TreeNode();
        rootNode.Text = BaseDir;
        rootNode.Expanded = true;
        rootNode.Value = rootFolder.Replace("\\", "~").Replace(" ", "|");
        tvMap.Nodes.Add(rootNode);
        tvMap.ShowLines = true;

        BuildTreeDir(rootFolder, rootNode);
    }

    // bygger upp menyn med mappar o mappnamn
    private void BuildTreeDir(string dirPath, TreeNode parentNode)
    {
        string[] subDir = Directory.GetDirectories(dirPath);

        // loopar ut alla mappar
        foreach (string directory in subDir)
        {
            string[] parts = directory.Split('\\');
            string name = parts[parts.Length - 1];
            TreeNode node = new TreeNode();
            node.Text = name;
            node.ImageUrl = "~/bilder/filemanager/folder.gif";
            node.Expanded = false;

            // lägger till nod
            parentNode.ChildNodes.Add(node);

            // bygger upp undermappar
            BuildSubDir(directory, node);
        }
    }

    // bygger upp undermenyn med mappar o mappnamn
    private void BuildSubDir(string dirPath, TreeNode parentNode)
    {
        string[] subDir = Directory.GetDirectories(dirPath);

        // loppar ut alla mappar
        foreach (string directory in subDir)
        {
            string[] parts = directory.Split('\\');
            string name = parts[parts.Length - 1];
            TreeNode node = new TreeNode();
            node.Text = name;
            node.ImageUrl = "~/bilder/filemanager/folder.gif";
            parentNode.ChildNodes.Add(node);
            node.Expanded = false;

            // bygger upp undermappar
            BuildSubDir(directory, node);
        }

    }

    private void BindGrid()
    {
        DirectoryInfo dirInfo = new DirectoryInfo(GetFolderPath());
        FileInfo[] info = dirInfo.GetFiles();

        if (info.Length != 0)
        {
            foreach (FileInfo f in info)
            {
            }
        }

    }

    protected string GetFolderPath()
    {
        string orginalPath = tvMap.SelectedNode.ValuePath;
        string newPath = orginalPath.Replace("~", "\\").Replace("/&nbsp", "\\");
        return newPath;
    }

Det är metoden BindGrid() som ska visa alla filer i GridView:n.

Hur gör man detta??

Tacksam för all hjälp :stud

Medlem sedan sep. 2005673 inlägg
#2

GetFiles() returnerar väl en lista så du borde kunna göra så här bara (otestat):

gvFile.DataSource = dirInfo.GetFiles();
gvFile.DataBind();

Medlem sedan sep. 2005833 inlägg
#3

tack, har problem med att få ut filerna för den mappen man klickar på

    protected string GetFolderPath()
    {
        string orginalPath = tvMap.SelectedNode.ValuePath;
        string newPath = orginalPath.Replace("~", "\\").Replace("/&nbsp", "\\");
        return newPath;
    }

när den har returneras kommer felmeddelandet:
System.ArgumentException: Ogiltiga tecken i sökvägen.
på:
DirectoryInfo dirInfo = new DirectoryInfo(GetFolderPath());

Sökvägen där är:
"C:\\Documents|and|Settings\\Skrivbord\\filhanterare\\upload\\"

Hur får man en korrekt sökväg?

Medlem sedan sep. 2005833 inlägg
#4

kommenterade bort:

rootNode.Value = rootFolder.Replace("\\", "~").Replace(" ", "|");

i private void BindTree() så nu fungerar den :o

vet inte om det var så smart men den fungerar iaf :e

Medlem sedan sep. 2005833 inlägg
#5

hur gör man för att räkna om b till kb i en bunden kolumn?
Har koden:

           <asp:BoundField 
               DataField="Length" 
               HeaderText="Storlek (kb)" />

Går det? i så fall hur??

Tacksam för all hjälp :stud

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)