Laden...

Dateien aus Gridview löschen

Erstellt von dewebey vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.687 Views
D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren
Dateien aus Gridview löschen

Hallo,

Ich hab in einem Gridview Dateien aus einem bestimmten Ordner angezeigt und möchte nun die Möglichkeit haben mittels eines "löschen"-Buttons nicht nur die Row zu löschen sondern eben die Datei.

Ein weiteres Problem, das ich habe ist folgendes: In dem Gridview werden Spalten angezeigt, die ich nicht haben möchte, wie z.B. "LastWriteTime" oder "Fullname"
In diesem Thread wurde das schonmal behandelt, das hat mir allerdings nicht geholfen, da ich nicht weiß, wie ich "die Spalten explizit definieren soll", also welcher Text verwendet werden soll im Tag.

Zum Schluss noch was, wenn ich schon dabei bin 😉 :
Ich möchte auf einer Seite dynamisch Links hinzufügen, also neue Unterseiten generieren. Wie könnte ich das am elegantesten lösen?

Danke schonmal
dewebey

V
327 Beiträge seit 2005
vor 16 Jahren

Hallo,

wie läßt du die dateien denn im grid anzeigen?
also wie kommen deine informationen in das grid?

datasource, datamember?

du solltest dir irgendwo in einer spalte die nicht zu sehen ist den komplenten pfad der datei merken und dann die der löschen methode die datei löschen und dann erst die zeile aus dem grid.

ist erstmal nur eine überlegung. hab ich selbst auch noch nie gemacht...

grüße von der ostsee

MFG Veasel

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

wie läßt du die dateien denn im grid anzeigen?

mit Datasource

Wenn ich AutoGenerateColumns auf "false" stelle, werden die Spalten nicht mehr angezeigt. Jetzt müsste ich nur noch wissen, wie ich diese explizit anzeigen lassen kann.

V
327 Beiträge seit 2005
vor 16 Jahren

hallo,

ja aber was packst du in datasouorce?

eine DataSet, eine DataTable?

poste mal ein bißchen code...

MFG Veasel

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

hier der code der code-behind:


    private void FilesInDirectory()
    {
        String[] filesInDirectory = Directory.GetFiles(directory);
        List<DirectoryInfo> files = new List<DirectoryInfo>();
        foreach (string file in filesInDirectory)
        {
            files.Add(new DirectoryInfo(file));  
        }
        dateien.DataSource = files;
        dateien.DataBind();
    }

und hier das Gridview:


    <asp:GridView ID="dateien" runat="server" CellPadding="4" ForeColor="#333333" GridLines="Both" >
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <Columns>
            <asp:ButtonField Text="löschen" />
        </Columns>
        
    </asp:GridView>
V
327 Beiträge seit 2005
vor 16 Jahren

hallo,

ich würde eine Tabelle als DataSource erstellen und das reinpacken was du in dem Grid sehen willst...

		
DataTable tbl = new DataTable("tblFiles");
tbl.Columns.Add("FullName");
tbl.Columns.Add("Length");
foreach (string file in Directory.GetFiles(@"c:\"))
{
	tbl.Rows.Add(new FileInfo(file).FullName, new FileInfo(file).Length.ToString());
}
dateien.DataSource = tbl;
dateien.DataBind();

löschen der Datei kannst du ja dann in einem try catch machen. den fullname in der Datei hast du ja über das FileInfo. kannst im Grid ablegen aber die spalte verstecken, oder legst dir eine liste mit allen dateien ab. wenn das Löschen der Datei erfolgreich war, kann du die zeile aus dem grid löschen.

MFG Veasel

5.941 Beiträge seit 2005
vor 16 Jahren

Hallo dewebey

Du kannst dir die benötigten Spaltennamen merken und AutoGenerateColumns auf false stellen.
Die benötigten Spalten kannst du dann über BoundColumns niederschreiben.
Den Button kannst du als letztes eintragen, dann ist er auch ganz rechts.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

Danke an euch beide, hat wunderbar geklappt mit dem DataTable.

Jetzt hab ich noch das Problem mit dem Löschen...
Ist es möglich, einen Button in einem Gridview zu belegen, der dann eine Methode aufruft und dieser dann die Datei bzw. den Dateinamen als Parameter übergibt?

Grüße
Dennis

K
95 Beiträge seit 2007
vor 16 Jahren

Du könntest ein Templatefield hinzufügen, welches den Button enthält. Auf den Button müsstest du noch Event registrieren, welches den Parameter benötigt und dann die Datei löscht.

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

ich hab grad versucht, einen neuen Button zu erstellen ( Button btn = new Button(); ) und diesen Button dann auch der Datatable zu übergeben.
Dann hab ich versucht, mit btn.Click += new EventHandler(ButtonClick) einen neues Event aufzurufen, wenn man auf den Button klickt.

Das Problem dabei, ich kann den Button im Gridview gar nicht anklicken??

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

ich hab es jetzt hinbekommen, danke nochmals.

Das einzige, was ich noch nicht geschafft habe, ist die 3. Frage. Ich stell sie mal etwas detailierter:

Und zwar hab ich eine Seite, auf der ich Links habe, die in derselben Seite immer einen anderen Inhalt darstellen sollen, wenn man sie anklickt. Nun möchte ich eine Funktion haben, dass man im admin Bereich weitere links hinzufügen kann.

Hab mir schon überlegt, ob das mit nem QueryString geht, weiß aber nicht wie ich das implementieren könnte...

Nun hab ich noch was 😉 : Ich möchte für dieses Projekt einen Login-Bereich erstellen. Da ich aber keine Datenbank benötige, weil es nur 1 user (ich) ist, der sich anmeldet, fällt das Login-Control ja schonmal weg. Gibts da sonst noch was fertiges oder kann man das Login-Control einfach irgendwie umbauen?

D
dewebey Themenstarter:in
119 Beiträge seit 2007
vor 16 Jahren

Hat niemand eine Idee?