Не уверен, что понимаю ваш вопрос на 100%, но я думаю, что понял суть.
Я предполагаю, что сначала вы хотите папки, а затем файлы. Я бы создал два повторителя в этой области: один для кнопок «Изображение папки» и «Ссылка», а другой для кнопок «Изображение файла» и «Ссылка».
Разбейте вашу команду linq на два запроса, один для получения папок и один для файлов. Затем просто привяжите повторители к соответствующим повторителям.
Вот небольшой код для начала работы:
<asp:Repeater ID="rptFolders" runat="server" OnItemCommand="rptFolders_ItemDataBound">
<ItemTemplate>
<div>
<asp:ImageButton ID="btnImage" runat="server" />
<asp:LinkButton ID="btnLink" runat="server" />
</div>
</ItemTemplate>
</asp:Repeater>
И код после звонка DataBind()
:
protected void rptFolders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Book book = (Book)e.Item.DataItem; //Or whatever your passing
ImageButton btnImage = e.Item.FindControl("btnImage");
LinkButton btnLink = e.Item.FindControl("btnLink");
btnLink.Text = book.Name;
btnLink.Click += new EventHandler(FolderClicked);
btnImage.Click += new ImageClickEventHandler(FolderClicked);
}
}
Очевидно, что вы можете делать все, что захотите, с Click Events, просто добавив их для хорошей меры.
Я бы, вероятно, создал бы Управление папками и файлами и использовал бы их вместо комбо imagebutton / linkbutton, таким образом я мог бы хранить больше информации о Папке / Файле для последующего доступа к ним, не выполняя другой запрос для получения идентификатора или что нет. Но есть миллион подходов к этому, выберите тот, который вы считаете лучшим.
Дайте мне знать, если вам нужно дополнительное руководство с этим решением или я не понял вашего вопроса.
Счастливое кодирование ...