Sie fügen Ihrer DataTable Zeilen falsch hinzu. Aber was noch wichtiger ist, warum eine DataTable verwenden? Verwenden Sie keine DataTable. Es gibt keine Notwendigkeit dafür. Es ist eine sinnlose Abstraktion. Sie können eine IEnumerable
von Objekten direkt an eine GridView binden. Dies ermöglicht Ihnen, strongly typed Objekte zu nutzen.
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/resumes") + FileUpload1.FileName);
}
LoadResumes();
}
protected void LoadResumes()
{
var resumeFiles = new List<FileInfo>();
foreach (string strFile in Directory.GetFiles(Server.MapPath("~/resumes")))
{
var fi = new FileInfo(strFile);
resumeFiles.Add(fi);
}
ResumesGridView.DataSource = resumeFiles;
ResumesGridView.DataBind();
}
Ihr GridView muss angepasst werden.
<asp:GridView id="ResumesGridView" runat="server" ItemType="System.IO.FileInfo" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Extension" HeaderText="File Extension" />
<asp:TemplateField HeaderText="File Extension Stongly Typed">
<ItemTemplate>
<asp:Label runat="server" Text="<%#: Item.Extension %>" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Hinweis Ich zeige die Erweiterung zweimal. Der erste Weg ist weniger ausführlich, aber nicht stark typisiert. Wenn Sie beispielsweise "Erweiterung" falsch schreiben, erhalten Sie zur Laufzeit einen Fehler, keine Kompilierzeit. Der zweite Weg, es weiß, dass Item
von dem Typ ist, der von ItemType
angegeben wird, so kann es zur Kompilierzeit fehlschlagen, wenn wir Extension
falsch schreiben und es uns auch Intellisense Code-Vervollständigung geben kann. Es ist besser, schnell zu versagen.
Haben Sie den Code debugged? Überprüft den Pfad, den es braucht? Stellen Sie sicher, dass Ihre Methode sogar getroffen wird? Warum übergeben Sie eine DataTable an das GridView? Warum binden Sie es nicht an eine stark typisierte Klasse, mit der Sie leichter arbeiten können? – mason
1) Sie sagen, dass es nicht speichert: Ist 'FileUpload1.HasFile' wahr? Wird die SaveAs-Methode ausgeführt? Hast du irgendwelche Ausnahmen? Haben Sie den Ordner manuell überprüft, um festzustellen, ob die Datei vorhanden ist? – ADyson
2) Anzeigen: Siehe docs: https://msdn.microsoft.com/en-us/library/system.data.datatable.rows(v=vs.110).aspx Sie können der Zeile keine Zeile hinzufügen DataTable wie Sie es tun. Die Dokumentation sagt "Um eine neue DataRow zu erstellen, müssen Sie die NewRow-Methode verwenden, um ein neues Objekt zurückzugeben. Ein solches Objekt wird automatisch nach dem Schema für die DataTable durch seine Auflistung von DataColumn-Objekten konfiguriert. Nach dem Erstellen einer neuen Zeile und Einstellung Fügen Sie die Zeile für die einzelnen Spalten in der Zeile der DataRowCollection mithilfe der Add-Methode hinzu. " – ADyson