Problema Getfilename

martedì 03 maggio 2005 - 17.19

mgianluca Profilo | Junior Member

come mai ragazzi, questa istruzione

Dim a As String = Path.GetFileName(Path.Combine(Server.MapPath("."), "\xls\"))

mi restituisce in a sempre ""
Anche se scrivo il percorso completo come stringa.
Mentre se inserisco "c:\programmi\" funziona.

mgianluca Profilo | Junior Member

Il pbl è questo:

Ho questa funzione

Public Function GridSource(Optional ByVal _reload As Boolean = False) As Array
Dim dir As Directory
GridSource = dir.GetFiles(Server.MapPath(".") + "\xls\")
End Function

GridSource lo associo al datagrid ma mi piacerebbe che nel datagrid non campaia tutta la directory ma solo il nome del file.

Come posso fare?

Brainkiller Profilo | Guru

Ciao Gianluca,
credo che l'unico percorso che puoi percorrere è fare la cosa in due passaggi.
Il Primo chiamare la funzione GetFiles e farti restituire l'array di stringhe.
La seconda fare un ciclo su questo array ed assegnare ad ogni casella il risultato della funzione GetFileName(contenuto_array)
In questo modo se l'array è così:

[0]="C:\temp\alfa1.txt"
[1]="C:\temp\alfa2.txt"

dopo il ciclo sarà:

[0]="alfa1.txt"
[1]="alfa2.txt"

Alla fine lo restituisci di ritorno alla funzione.
ciao
david

martinmystero Profilo | Newbie

Ciao,
io non ho capito molto bene come vuoi usare questa funzione... cmq ti dico come io faccio ad estrarre i nome dei file senza percorso. Eventualmente lo adegui alla tua funzione..

For Each FilePresenti As String In Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory, "\xls\"))
console.writeline( FilePresenti.Substring(FilePresenti.LastIndexOf("\") + 1))
Next

mgianluca Profilo | Junior Member

ho creato questa funzione

Public Function GridSource(Optional ByVal _reload As Boolean = False) As Array
Dim dir As Directory
Dim filePresenti As String
Dim i As Integer
' GridSource = dir.GetFiles(Server.MapPath(".") + "\xls\")

Dim indice As Integer = dir.GetFiles(Server.MapPath(".") + "\xls\").Length
Dim listaFile(indice - 1, 1) As String
For Each filePresenti In dir.GetFiles(Server.MapPath(".") + "\xls\")
listaFile(i, 0) = filePresenti.Substring(filePresenti.LastIndexOf("\") + 1)
listaFile(i, 1) = filePresenti
i = i + 1
Next
Return listaFile
End Function

Ma quando associo girdsource al datagrid mi va in errore.

COme mai?

mgianluca Profilo | Junior Member

Come errore ho questo:

Dettagli eccezione: System.ArgumentException: La matrice non è unidimensionale.

Mi potresti aiutare a rendere meno contorto il codice?

Grazie mille

mgianluca Profilo | Junior Member

scusa se ti disturbo ancora.
Purtroppo sono un novizio...

Come dici tu di crearmi una DataTable.

Mi puoi mostrare un esempio.

Grazie mille per l'aiuto

martinmystero Profilo | Newbie

Ciao,
allora ti faccio vedere una soluzione per WinForm che adeguerai al tuo progetto.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ArrayFile() As String = GridSource()
Dim MyDataTable As New DataTable
MyDataTable.Columns.Add(New DataColumn("ListaFile", GetType(String)))
For Each NomiFile As String In ArrayFile
MyDataTable.Rows.Add(New String() {NomiFile})
Next
DataGrid1.DataSource = MyDataTable
End sub

Private Function GridSource(Optional ByVal _reload As Boolean = False) As Array
Dim TempFile(0) As String
Dim Conta As Integer
Dim NameFile As DirectoryInfo
For Each FilePresenti As String In Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory, "\Films\"))
ReDim Preserve TempFile(Conta)
TempFile(Conta) = FilePresenti.Substring(FilePresenti.LastIndexOf("\") + 1)
Conta += 1
Next
Return TempFile
End Function

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5