NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
Olá Pessoal,
Continuando nosso aprendizado, vamos tratar hoje de mais algumas formas de lhe dar com arquivos dentro do servidor usando a plataforma .Net
Na primeira parte deste tutorial, falamos a respeito dos diretórios, aprendemos a listar Subdiretórios e criar novos Subdiretórios.
Hoje, nosso trabalho estará voltado para os arquivos, mas juntamente com os diretórios, é claro, pois, os arquivos estão dependentes destes.
Iniciamos da seguinte forma: utilizando o mesmo projeto anterior, você vai criar um novo arquivo chamado ListagemDeArquivos.aspx.
Neste arquivo, vamos popular um ListBox com os Subdiretórios da pasta wwwroot, e vamos popular um DataGrid com os arquivos do Subdiretório selecionado. Então insira os seguintes WebControls:
» DataGrid: dgArquivos
» ListBox: lstDiretorios
Você pode formatar o DataGrid da maneira que achar melhor:
Bem, o código para popular os diretórios já está pronto, lembra? Utilizamos ele no tutorial anterior, então, basta colar neste arquivo. Vou listar novamente o código abaixo:
Private Sub PopularSubDiretorios()
Dim dir As New DirectoryInfo("C:\Inetpub\wwwroot")
lstDiretorios.DataTextField = "Name"
lstDiretorios.DataValueField = "FullName"
lstDiretorios.DataSource = dir.GetDirectories()
lstDiretorios.DataBind()
End Sub
Esta rotina deve ser chamada no Page_load:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
PopularSubDiretorios()
End If
End Sub
Pronto! Parte do nosso projeto já foi solucionado. Agora, precisamos obter os arquivos do Subdiretório selecionado.
O código que faz esta tarefa se parece muito com o código para a listagem de Subdiretórios, veja:
Private Sub ListarArquivos(ByVal Diretorio As String)
Dim dir As New DirectoryInfo(Diretorio)
dgArquivos.DataKeyField = "FullName"
dgArquivos.DataSource = dir.GetFiles()
dgArquivos.DataBind()
End Sub
Esta rotina deve ser chamada no evento SelectedIndexChanged do lstDiretorios, e para que este evento funcione, devemos acionar a propriedade AutoPostBack do lstDiretorios, marcando True para seu valor:
Veja o código para acionar esta rotina:
Private Sub lstDiretorios_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstDiretorios.SelectedIndexChanged
If lstDiretorios.SelectedIndex > -1 Then
ListarArquivos(lstDiretorios.SelectedItem.Value)
End If
End Sub
Usamos o trecho
If lstDiretorios.SelectedIndex > -1 Then
Para garantir que só o DataGrid só vai ser populado caso o ListBox possua uma opção selecionada.
Vamos ao teste:
Mostrando somente os diretórios, sem selecionar...
Mostrando os arquivos do diretório selecionado....
É possível também filtrar os arquivos mostrados através de sua extensão.
Basta aplicar um parâmetro no método getFiles(), veja o código:
Private Sub ListarArquivos(ByVal Diretorio As String)
Dim dir As New DirectoryInfo(Diretorio)
dgArquivos.DataKeyField = "FullName"
'Exibirá apenas os arquivos de extensão ASPX
dgArquivos.DataSource = dir.GetFiles("*.aspx")
dgArquivos.DataBind()
End Sub
Testando o código acima:
Vejam que ele está listando somente a extensão aspx.
Agora para terminar, vamos incluir uma nova coluna no DataGrid que servirá para excluir um determinado arquivo.
Selecione o DataGrid, clique em PropertyBuilder, vá em Columns e inclua uma nova coluna do tipo Select
Configure de acordo com a imagem abaixo:
Clique em Ok, e vamos ao código para executar esta exclusão.
Private Sub ExcluirArquivo(ByVal arquivo As String)
'Cria o objeto FileInfo, passando o nome do arquivo como argumento
Dim fli As New FileInfo(arquivo)
'Executa o método delete que apaga o arquivo
fli.Delete()
'Carrega novamente a lista de arquivos, só que atualizada
ListarArquivos(lstDiretorios.SelectedItem.Value)
End Sub
Este método deve ser chamado no SelectedIndexChange do DataGrid, passando sua chave-primária como parâmetro. Esta chave primária foi definida no método ListarArquivos através do seguinte trecho de código:
dgArquivos.DataKeyField = "FullName"
Para chamar o método passando a chave-primária, utilize o código abaixo:
Private Sub dgArquivos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgArquivos.SelectedIndexChanged
ExcluirArquivo(dgArquivos.DataKeys(dgArquivos.SelectedIndex))
End Sub
Faça o teste, mas não vá excluir arquivos importantes...
Aqui encerramos mais uma parte deste tutorial. Na próxima mostrarei como montar sua galeria de imagens com Upload e tudo mais
Abraços,
Lano de Castro