---
title: "lista filer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/101355-lista-filer"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Arne"
published: "2004-04-12T21:35:04.000Z"
updated: "2004-04-14T06:24:10.000Z"
replies: 11
views: 490
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/101355-lista-filer"
---

# lista filer

## #1 — Arne, 2004-04-12T21:35Z

Har en DataGrid där jag listar jpg bilder i en mapp.

```
fileList.DataSource = dirInfo.GetFiles("*.jpg")
fileList.DataBind()
```

Denna kod listar alla jpg filer i mappen, men hur gör jag om jag vill filtrera flera filhändelser. Visa bara .gif, .jpg och .htm filer i mappen?

Eller om jag kan filtrera visa ej dessa filer med filhändelsen.....

Permalänk: https://www.webforum.nu/p/101355

## #2 — renholm, 2004-04-12T21:56Z

Normallt brukar man separera med ';' testa det.

Permalänk: https://www.webforum.nu/p/1320203

## #3 — Arne, 2004-04-13T05:55Z

fungerar ej

Nix, funkar inte. Tror jag provat alla sätt nu, men säkert finns det ett kvar. Några fler tips?

Permalänk: https://www.webforum.nu/p/1320276

## #4 — Jon, 2004-04-13T06:59Z

Det ser inte ut dom det går att göra så i dokumentationen.
Men man vet ju aldrig :)
Annars måste du hämta alla, iterera dem och bara visa de med rätt extention.

Permalänk: https://www.webforum.nu/p/1320288

## #5 — Arne, 2004-04-13T07:06Z

Hmmmmm

> Annars måste du hämta alla, iterera dem och bara visa de med rätt extention.

 

Hur menar du? Visa /förklara för en nybörjare hur jag väljer att inte visa t.ex .aspx filer i datagriden?

Permalänk: https://www.webforum.nu/p/1320291

## #6 — Dino, 2004-04-13T07:48Z

```
private void BindData()
{
   StringCollection sc = new StringCollection();
   DirectoryInfo di = new DirectoryInfo([i]dinsökväg[/i]);
   FileInfo[] fi = di.GetFiles();
   foreach(FileInfo f in fi)
   {
      if(!f.Extension.Equals(".aspx") && !f.Extension.Equals(".resx"))
      {
         sc.Add(f.Name);
      }
   }
   dgFiles.DataSource = sc;
   dgFiles.DataBind();
}
```

```
sub BindData()
   dim sc as new StringCollection()
   dim di as new DirectoryInfo([i]dinsökväg[/i])
   dim fi[] as FileInfo = di.GetFiles()

   for each f as FileInfo in fi
      if not f.Extension.Equals(".aspx") and not f.Extension.Equals(".resx") then
        sc.Add(f.Name)
     end if
   next

   dgFiles.DataSource = sc
   dgFiles.DataBind()
end sub
```

 

red// vb version tillagd

Permalänk: https://www.webforum.nu/p/1320299

## #7 — Arne, 2004-04-13T07:50Z

Ursäkta mig:-)

Hmmm. Ursäkta mig.........
Hur kan det tänkas se ut i VB?

Permalänk: https://www.webforum.nu/p/1320300

## #8 — Jon, 2004-04-13T08:00Z

// Redigerat, såg inte redigeringen (det där blev krångligt)  ;)

Permalänk: https://www.webforum.nu/p/1320302

## #9 — Arne, 2004-04-13T11:00Z

I helskottefyr....

Icket att jag får till det. Med koden ovan kom jag så långt till att den visade ingenting???

Problemet är att min default.aspx fil visas.
Ett sätt är att lägga den utanför mappen och ha en exakt sökväg som D:\\webbmapp\\mapp, men av någon anledning så får då fel länk i min HyperLinkColumn. Men det funkar att radera.
DataNavigateUrlField hänvisar ju till mappen där default.aspx finns och inte där mina bilder är.

Kan jag komma runt detta på något sätt?

Nedan är den fungerande koden som listar alla .jpg bilder

```

<%@ Page Language="VB" debug="True" %>
<%@ Import Namespace="System.IO" %>
<script language="VB" runat="server">

      Dim dirInfo as New DirectoryInfo(Server.MapPath(""))

	Sub Page_Load(sender as Object, e as EventArgs)
			fileList.DataSource = dirInfo.GetFiles("*.jpg")
			fileList.DataBind()
	End Sub
  
	Sub fileList_ItemDataBound(sender as Object, e as DataGridItemEventArgs)
		If e.Item.ItemType <> ListItemType.Header AND e.Item.ItemType <> ListItemType.Footer then
			Dim deleteButton as LinkButton = e.Item.Cells(0).Controls(0)
			deleteButton.Attributes("onclick") = "javascript:return " & "confirm('Är du säker att du vill radera " & DataBinder.Eval(e.Item.DataItem, "Name") & "?')"    
		End If
	End Sub
  
  
	Sub DeleteFile(sender as Object, e as DataGridCommandEventArgs)
		Dim fileName as String = fileList.DataKeys(e.Item.ItemIndex)
		File.Delete(fileName)
	
		fileList.DataSource = dirInfo.GetFiles("*")
		fileList.DataBind()
	End Sub
</script>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>

<form runat="server">
 
  <table width="590" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <td>
	<ASP:DataGrid id="fileList" runat="server"
	Width="100%"
	GridLines="Horizontal"
	BorderColor="#829ABF"
	BorderStyle="Dotted"
	BorderWidth="1"	
	ShowHeader="False"
	ShowFooter="False"
	CellPadding=4
	CellSpacing="0"
	DataKeyField="FullName"
	OnItemDataBound="fileList_ItemDataBound"
	OnDeleteCommand="DeleteFile"
	AutoGenerateColumns="false">
	
	<AlternatingItemStyle backcolor="#F2F6F9"></AlternatingItemStyle>
	<Columns>
	<asp:ButtonColumn Text="Delete" ButtonType="LinkButton" CommandName="Delete" />
	<asp:HyperLinkColumn DataNavigateUrlField="Name" Target="blank" DataTextField="Name" HeaderText="File Name" />
	<asp:BoundColumn DataField="Length" HeaderText="File Size" ItemStyle-HorizontalAlign="Right" DataFormatString="{0:#,### bytes}" />	
	</Columns>
   </ASP:DataGrid>	  
	  </td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/1320377

## #10 — PDahlen, 2004-04-13T13:32Z

Jag ändrade dina Page_Load och fileList_ItemDataBound till följande och då fungerade det fint.

```
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        fileList.DataSource = dirInfo.GetFiles("*.*")
        fileList.DataBind()
    End Sub

    Sub fileList_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
        If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <> ListItemType.Footer Then
            If InStr(DataBinder.Eval(e.Item.DataItem, "Name"), ".jpeg") Or InStr(DataBinder.Eval(e.Item.DataItem, "Name"), ".jpg") Or InStr(DataBinder.Eval(e.Item.DataItem, "Name"), ".gif") Then
                Dim deleteButton As LinkButton = e.Item.Cells(0).Controls(0)
                deleteButton.Attributes("onclick") = "javascript:return " & "confirm('Är du säker att du vill radera " & DataBinder.Eval(e.Item.DataItem, "Name") & "?');"
            Else
                e.Item.Visible = False
            End If
        End If
    End Sub
```

Om det är nån snygg lösning vet jag väl inte men som sagt, det funkar. 
Om jag skulle göra det själv så skulle jag nog bygga lite klasser som sköter logiken. ;)

Permalänk: https://www.webforum.nu/p/1320447

## #11 — drunken_master, 2004-04-13T15:20Z

Här får du ett till alternativ.
Gör om  if-satsen som PDahlen föreslog  med hjälp av en strängarray som håller de filändelser du är intresserad av. 

Vad du gillar bäst är upp till dig :-)  

C#

```

private string[] ändelser = new string[]{".gif",".jpg", ".tif",".tiff",".ai",".pdf"}; 

//I fileList_ItemDataBound
int index = Array.IndexOf(this.ändelser, DataBinder.Eval(e.Item.DataItem, "Name").ToString().ToLower());
if(index > -1)
//ändelsen hittad, gör någonting
```

Permalänk: https://www.webforum.nu/p/1320520

## #12 — Arne, 2004-04-14T06:24Z

Hyvens alla.....

Tack för hjälpen, nu fungerar det förträffligt. Hade nog fått klura länge för att få till detta..........

Permalänk: https://www.webforum.nu/p/1320852

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/101355-lista-filer
