Содержимое ASP.NET, которое у вас есть, должно быть помещено в Repeater
.files
, которые у вас есть, должны быть сгруппированы по месяцу и дате.Таким образом, в основном вы получите список родитель-потомок.Родитель, который является группой файлов, будет связан с Repeater
, а потомки, которые являются файлами, принадлежащими этой группе, будут связаны с GridView
в Repeater
.
Содержимое ASP.NET
Содержимое ASP.NET будет примерно таким же.Обратите внимание, что свойство gvInvoiceList
DataSource
связано с InvoiceList
, свойством группы, с которой я пришел (что вы увидите в коде ниже), которое будет иметь список файлов, принадлежащих этой группе.
<asp:Repeater ID="repInvoiceGroups" runat="server">
<ItemTemplate>
<table width="40%" border="0" style="margin-left:auto; margin-right:auto;">
<tr><td><asp:Label ID="lblGridHeader" CssClass="TextFont"
Text='<%# Eval("MonthYear", "{0:MMMM yyyy}") %>'
runat="server"></asp:Label></td></tr>
<tr>
<td align="center">
<asp:GridView ID="gvInvoiceList" runat="server"
AutoGenerateColumns="false" AllowSorting="true"
DataSource='<%# Eval("InvoiceList") %>'>
<columns>
<asp:TemplateField ItemStyle-Width="10%" HeaderText="File Type">
<ItemTemplate><asp:HyperLink ID="imgFileType" ImageUrl="images/Icon_Pdf.gif" NavigateUrl='<%# SetNavigateUrl(Eval("Name")) %>' runat="server"></asp:HyperLink></ItemTemplate>
</asp:TemplateField>
<asp:boundfield datafield="Name" headertext="Invoice #"/>
<asp:boundfield datafield="LastWriteTime" headertext="Date Modified"/>
</columns>
</asp:GridView>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Кодовый код
Что касается кода, я не бегло использую DataTable
, чтобы иметь отношения родитель-потомок, необходимые для структуры ASP.NET, которую я использовал для своегоответ, но это должно быть легко выполнимо, используя обычные классы.И я также не бегло использую VB.NET, так что извините мой пример, который будет использовать C #, который, я думаю, вы должны довольно легко конвертировать в VB.NET.1025 *, чтобы сделать группировку и анонимный класс, чтобы иметь отношения родитель-потомок для этого, поэтому код довольно короткий.
repInvoiceGroups.DataSource = files
.GroupBy(f => f.LastWriteTime.ToString("yyyy-MM"))
.Select(g => new {
MonthYear = DateTime.ParseExact(g.Key, "yyyy-MM", CultureInfo.InvariantCulture),
InvoiceList = g.OrderByDescending(f => f.LastWriteTime) })
.OrderByDescending(o => o.MonthYear);
repInvoiceGroups.DataBind();
p / s: код был написан в текстовом редакторе и не проверен.Дайте мне знать, если у вас возникнут какие-либо ошибки.:)