我试图在路径中获取所有文件.txt并将其列在网页中,如下面的代码所示:
DataTable dt = new DataTable();
dt.Columns.Add("tenalbum", typeof(String));
string dir = Server.MapPath("~") + "images\\avatar\\" + Session["Username"].ToString();
string[] files = Directory.GetFiles(dir);
foreach (string file in files)
{
if (Path.GetExtension(file).Equals(".txt"))
{
DataRow dtr = dt.NewRow();
dtr["tenalbum"] = Path.GetFileName(file);
}
}
DataList1.DataSource = dt;
DataList1.DataBind();
<。>在.aspx页面中:
<div>
<asp:DataList ID="DataList1" runat="server" CellPadding="4" Width="586px" CellSpacing="2"
GridLines="Both">
<ItemTemplate>
<table style="border: thin solid #333333; width: 566px; margin-bottom: 3px">
<tr>
<td style="width: 70px">
<asp:Label ID="Label1" runat="server" Text='<%# Eval("tenalbum") %>'></asp:Label>
</td>
<td class="style3">
<asp:ImageButton ID="imgbtn_Favorite" runat="server" ImageUrl="~/images/playAlbum.png"
Width="25px" CommandArgument='<%# Eval("tenalbum") %>' />
</td>
</tr>
</table>
</ItemTemplate>
<SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
</asp:DataList>
</div>
问题是datalist的数据源没有任何绑定。任何帮助都会很棒。
答案 0 :(得分:0)
内部循环错过了将行添加到表中所需的行
if (Path.GetExtension(file).Equals(".txt"))
{
DataRow dtr = dt.NewRow();
dtr["tenalbum"] = Path.GetFileName(file);
dt.Rows.Add(dtr); // This line adds the new row to the rows collection of the table
}
顺便说一下,你只能提取带有txt扩展名using the GetFiles overload且带有模式参数的文件
string[] files = Directory.GetFiles(dir, "*.txt");
而且,作为最终的优化,我认为你可以简单地写
List<string> files = Directory.GetFiles(@"d:\temp", "*.txt")
.Select(x => Path.GetFileName(x)).ToList();
DataList1.DataSource = files;
DataList1.DataBind();