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
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
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.
hallo,
ja aber was packst du in datasouorce?
eine DataSet, eine DataTable?
poste mal ein bißchen code...
MFG Veasel
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>
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
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
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
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.
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??
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?