[英]How to use datalist in asp.net c#?
我的asp標記如下:
<asp:DataList ID="dtlist" runat="server" RepeatColumns="3" CellPadding="5" OnItemDataBound="dtlist_DataBound">
<ItemTemplate>
<asp:Image Width="150" ID="Image1" ImageUrl='<%# Container.DataItem %>' runat="server" />
<br />
<asp:HyperLink ID="HyperLink12" Text='<%# Container.DataItem %>' NavigateUrl='<%# Container.DataItem %>' runat="server"/>
</ItemTemplate>
</asp:DataList>
我的C#代碼如下:
protected void dtlist_DataBound(object sender, DataListItemEventArgs e)
{
string albumName = Context.Request.QueryString["Album"];
try
{
DirectoryInfo dir = new DirectoryInfo(MapPath(string.Format("Images/{0}", albumName)));
FileInfo[] files = dir.GetFiles();
foreach (FileInfo info in files)
{
((Image)e.Item.FindControl("Image1")).ImageUrl = string.Format("~/Images/{0}/{1}", albumName, info.Name);
((HyperLink)e.Item.FindControl("HyperLink12")).Text = info.Name;
((HyperLink)e.Item.FindControl("HyperLink12")).NavigateUrl = string.Format("~/Images/{0}/{1}", albumName, info.Name);
}
}
catch (Exception ex)
{
throw;
}
}
我想顯示存儲在磁盤驅動器中的特定文件夾(專輯)中的圖像。 當用戶單擊專輯1時,將顯示專輯1中的所有圖像。 例如。 如果album1包含10張圖像,則應在數據列表中顯示10張圖像。 但是從我上面的代碼來看,所有10張圖像中僅顯示最后一張圖像。 有什么方法可以修改上面的代碼以顯示10個單獨的圖像?
您不需要此處的項目數據綁定,您可以像這樣更改標記;
<asp:DataList ID="dtlist" runat="server" RepeatColumns="3" CellPadding="5">
<ItemTemplate>
<asp:Image Width="150" ID="Image1" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Image") %>' runat="server" />
<br />
<asp:HyperLink ID="HyperLink12" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Image") %>' runat="server"/>
</ItemTemplate>
</asp:DataList>
在頁面加載中,您可以選擇一個具有所需屬性名稱的匿名類型的新列表(如標記中<%#DataBinder.Eval(Container.DataItem,“ Name ”)%>所示:
string albumName = Context.Request.QueryString["Album"];
try
{
DirectoryInfo dir = new DirectoryInfo(MapPath(string.Format("Images/{0}", albumName)));
var dataToBeBound = dir.GetFiles().Select(x => new
{
Name = x.Name,
Image = string.Format("~/Images/{0}/{1}", albumName, x.Name)
}).ToList();
dtlist.DataSource = dataToBeBound;
dtList.DataBind();
}
catch (Exception ex)
{
throw;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.