We help IT Professionals succeed at work.

Exclude Extensions from file array

lakhi
lakhi asked
on
349 Views
Last Modified: 2013-11-07
I have an .aspx page that links to all the .pdf files in a directory and does not display the extension.
Now they would like to have all the files linked and still not display the file extension.
I'm thinking there would be an easier way to do this using "GetFileNameWithoutExtension" but I'm not exactly sure how to do it.
Thanks for any help
Dim dirInfo as New DirectoryInfo(Server.MapPath("/p1/q/csr rpt"))		
Dim arrFileInfo  As Array
Dim filesInfo   As FileInfo
Dim filesTable   As New DataTable
Dim drFiles    As DataRow
Dim dvFiles   As DataView
Dim ofn,ext As String
Dim charCt as Integer
filesTable.Columns.Add("Name", Type.GetType("System.String"))
filesTable.Columns.Add("LastWriteTime", Type.GetType("System.DateTime"))
' Get File Info
arrFileInfo = dirInfo.GetFiles("*.pdf")
For Each filesInfo In arrFileInfo
  drFiles = filesTable.NewRow()					
  ofn = filesInfo.Name
  ext = Right(ofn, 4)
  charCt = Instr(ofn, ".") -1
  ofn = Mid(ofn, 1, charCt)
  drFiles("Name") = ofn
  drFiles("LastWriteTime") = filesInfo.LastWriteTime					
  filesTable.Rows.Add(drFiles)
Next filesInfo
				
dvFiles = filesTable.DefaultView
dvFiles.Sort = "LastWriteTime DESC"
 
dg1.DataSource = dvFiles
dg1.DataBind()

Open in new window

Comment
Watch Question

High School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
I tried that and when I preview the page, I get this error:
BC30456: 'GetFileNameWithoutExtension' is not a member of 'System.IO.FileInfo'

Author

Commented:
Wait a sec - that might have been something I did. BRB
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009

Commented:
Look closely at the line..  =)

    drFiles("Name") = System.IO.Path.GetFileNameWithoutExtension(filesInfo.Name)

Author

Commented:
I did get it to work.
Now, the issue is to add the extension back in when I set up the "DataNavigateUrlFormatString" in the datagrid where the links are listed.
When they were all pdf files, I could just use {0}.pdf but now I'm not sure. How can I do that?
The issue is a little trickier for me because the links are in a virtual directory on the intranet server. So I do a server.mappath to the virtual directory but then the "DataNavigateUrlFormatString" will be:
"http://myintranet.com/virtualDir/qty/csr/2008/" and I used to just add the "/{0}.pdf " but of course that doesn't work now.
help?
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009

Commented:
Add the actual FileInfo instance to your Table:

    filesTable.Columns.Add("FileInfo", Type.GetType("System.IO.FileInfo"))

Then in the loop:

    drFiles("FileInfo") = filesInfo

Now you can get it back out with a cast:

    Dim fi As FileInfo = CType(YourDataRowHere("FileInfo"), FileInfo)
    Dim FullName As String = fi.FullName
    ' ...do something with "FullName"...


Author

Commented:
Sorry - I'm still a bit confused. I understand how to get the filename with and without the extension but when I set up the datagrid link, I get lost.
If I have:
    Dim fi As FileInfo = CType(YourDataRowHere("FileInfo"), FileInfo)
    Dim FullName As String = fi.FullName

Then how do I reference it in the datagrid hyperlink column. Here is what I mean:
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataNavigateUrlFormatString="http://myintranet.com/virtualDir/qty/csr/2008/" **** DataTextField="Name" Target="_blank">
**** Can I just put "FullName" at this point or how do I do that?
Sorry to be a pest...
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009

Commented:
(you're not being a pest)

*** I'm NOT a web programmer though ***         =(

Couldn't you just add an extra column to your datatable that has the filename with the extension on it?

    filesTable.Columns.Add("FileName", Type.GetType("System.String"))
    ...
    drFiles("FileName") = filesInfo.Name ' This WILL have the extension on it

Then you could use your previous code that worked for just PDFs, but with "FileName" instead of "Name".

Sorry if that makes no sense.  Like I said, I'm not a web programmer.  =\

Author

Commented:
I did post my question in the "Programming for ASP.Net"
If you aren't a web programmer, who else do I ask?
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009

Commented:
You also posted in the GENERIC .Net Topic areas with a code snippet dealing almost exclusively with non web specific code.  I looked at your question and it seemed like I could answer just the part you needed w/o knowing any web programming...and I did.  I showed how to use System.IO.GetFileNameWithoutExtension().

I'll hit the "Request Attention" button and they can get more attention to your question.

Apologies...

Author

Commented:
Oh! That makes sense.
Obviously, I'm new at this.
I think I will post it as a separate question because you were so helpful with my main question.
Thank you very much.

Author

Commented:
Very helpful. I really needed a web programmer but I didn't post my question in the right place and the Expert who helped me did a great job! Thanks!

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.