Implementação de pasta de design ASP.NET de disco rígido de rede
Autor:Eve Cole
Data da Última Atualização:2009-06-30 15:39:42
Conforme mencionado na introdução do conceito de “disco rígido de rede”, cada usuário possui seu próprio espaço no “disco rígido de rede”. É assim que isso é tratado no seguinte design de programa: uma pasta fixa é fornecida ao usuário, sob a qual o usuário pode adicionar/excluir novas pastas ou arquivos. Conforme mostrado na Figura 1, quando você abre a página da web pela primeira vez, todo o conteúdo da pasta (incluindo arquivos e pastas) será listado. Se quiser entrar na pasta de próximo nível, você pode selecionar a pasta e clicar no botão "Abrir" para entrar. A implementação da função de visualização do conteúdo da pasta será explicada passo a passo a seguir.
Figura 1 Interface principal do usuário |
1. Carregamento de página
Como o diretório do usuário fornecido pelo programa é fixo, como c:UserDir, e todo o conteúdo da pasta deve ser exibido após o carregamento da página, as operações correspondentes precisam ser executadas em Page_Load: primeiro determine se a pasta existe , se não, se existir, você precisa criá-lo primeiro e depois listar o conteúdo na pasta. O código é implementado da seguinte forma:
private void Page_Load (remetente do objeto, System.EventArgs e) { //Coloque aqui o código do usuário para inicializar a página
if(Page.IsPostBack==falso) { CurrentPath= @"c:UserDir"; //Definir o diretório atual if(Directory.Exists(@"c:UserDir")==false) //Se o diretório não existir, crie o diretório Directory. CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //Inicializa o diretório de carregamento} }
|
O método LoadDir(string FullPath) é usado para listar todo o conteúdo da pasta.
privado vazio LoadDir(string FullPath) { CaminhoAtual=CaminhoCompleto; Valores de ArrayList = new ArrayList(); string [] MeusArquivos,MeusDirs; MyFiles = Directory.GetFiles(FullPath); //Obter todos os arquivos do diretório if(CurrentPath!=@"c:UserDir") //Se não for o diretório superior, adicione a opção "retornar ao diretório superior" { valores.Add("Retornar ao diretório superior"); }
valores.AddRange(MyFiles); //Adicionar arquivos MyDirs= Directory.GetDirectories(FullPath); //Obter todos os diretórios neste diretório valores.AddRange(MyDirs); FileList.DataBind(); //Vincular dados } |
Primeiro, defina os valores de um objeto de matriz ArrayList para armazenar todo o conteúdo do diretório de nível superior (incluindo nomes de pastas e nomes de arquivos). O método Directory.GetFiles() retorna todos os nomes de arquivos no diretório de nível superior. Seu tipo de retorno é uma matriz de string, portanto, um objeto de classe de string MyFiles precisa ser definido para salvar os nomes de arquivos retornados. arquivos no diretório de nível superior, também defina um objeto de matriz de string MyDirs para salvá-los. Depois de concluir isso, você pode adicionar os arrays MyFiles e MyDirs ao objeto de valores. A última coisa a fazer é adicionar uma fonte de dados e vincular os dados ao objeto de controle ListBox FileList. Uma coisa precisa ser explicada: se o diretório atual não for o diretório de nível superior, você precisa poder retornar ao diretório de nível superior. Para fazer isso, você precisa adicionar o "Retornar ao diretório de nível superior". opção para FileList.
2. Visualização de diretório multinível
Com os dois trechos de código listados na seção anterior, você pode listar todo o conteúdo do diretório de nível superior quando a página for carregada. Obviamente, listar o conteúdo do diretório de nível superior não é suficiente. Semelhante ao sistema operacional Windows, os diretórios de pastas no disco rígido da rede também são aninhados e há dois ou mais níveis de diretórios de pastas. Para isso, algum processamento correspondente deve ser realizado para que os usuários possam visualizar o conteúdo das pastas multiníveis. O design de interface anterior fornece um botão "Abrir". Depois que o usuário seleciona a pasta correspondente, clique no botão para visualizar o conteúdo da pasta.
Agora adicione o código do botão "Abrir". Clique duas vezes no botão no painel "Design" e o sistema adicionará automaticamente um evento a ele. O conteúdo do código é o seguinte:
private void btnOpen_Click (remetente do objeto, System.EventArgs e) { if(FileList.SelectedItem.Text=="Retornar ao diretório de nível superior") //Retornar ao diretório de nível superior{ string ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(ParentPath); retornar; } senão //abre diretório{ LoadDir(FileList.SelectedItem.Text); } } |
O programa primeiro determina se o usuário selecionou "Retornar ao diretório superior". Nesse caso, você deve primeiro retornar o nome da pasta de nível superior por meio do método Directory.GetParent() e, em seguida, chamar o método LoadDir() para exibir o conteúdo do diretório se o usuário não selecionar "Retornar ao nível superior; diretório" mas um nome de pasta, você pode chamar diretamente o método LoadDir(). FileList.SelectedItem.Text é o nome da pasta selecionada, que é usado como parâmetro do método LoadDir().