views:

1305

answers:

2

I want to create dynamic folders at run time. Folder names with be input via a TextBox and output will be displayed in a TreeView.

The form will submit if I enter the first folder name into textbox1 and click the "Add Folder" button. When I submit multiple folders with the same name the output should be an indexed increment of the name. Eg. FooFolder, FooFolder(2), FooFolder(3), etc.

If I delete FooFolder(2) and then recreate a folder with the name FooFolder, the folder should be FooFolder(2), and if I create one more folder then it should be FooFolder(4).

For deletion one can select the particular folder from the TreeView which will be displayed in TextBox2 and click the "Remove Folder" button.

Here is my presentation code:

<asp:Button ID="btnAddFolder" runat="server" Height="24px" Text="Add Folder" 
        Width="148px" onclick="btnAddFolder_Click" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br />
    <asp:Button ID="btnRemoveFolder" runat="server" Text="Remove Folder" />
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br />
    <br />
    <asp:TreeView ID="TreeView1" runat="server" ImageSet="XPFileExplorer" 
        NodeIndent="15">
        <ParentNodeStyle Font-Bold="False" />
        <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
        <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" 
            HorizontalPadding="0px" VerticalPadding="0px" />
        <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" 
            HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" />
    </asp:TreeView>

Now how do I write the code to do the work?

A: 

You can read the directory for the sub directories, compare the directory names with the given name(entered in textbox). If it is found you can append the counter value. You need to increment this counter if the folder name is like "()". After getting the proper name i.e., after appending the counter value you can call win32 API to create the directory

int SHCreateDirectory(HWND hwnd, LPCWSTR pszPath);

EDIT: You can call the specific apis depending on the OS, technology to create the directory. Above is for Win32.

Vinay
Since the project is ASP.NET, I recommend the usage of the .NET System.IO methods.
Mitchel Sellers
Yes, you are right.
Vinay
hi what is HWND hwnd, LPCWSTR pszPath????
It is a way to create folder in win32. You didn't mention ASP.net so I had given Win32 sample.
Vinay
+1  A: 

Your question is a bit unclear, but I'll try to get you a little ways there anyway.

First of all be sure that you are importing/using (depending on language) the System.IO namespace for this to work. But what you can do is something like this.

string pathToCreate = "~/UserFolders/" + TextBox1.Text;
if(Directory.Exists(Server.MapPath(pathToCreate))
{
   //In here, start looping and modify the path to create to add a number
   //until you get the value needed
}

//Now you know it is ok, create it
Directory.CreateDirectory(Server.MapPath(pathToCreate));

This should help get you going with the folder creation anyway.

Mitchel Sellers