簡體   English   中英

如何在ASP.NET C#中使用數據列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM