我必须显示图片中的照片库。我将照片库的信息存储在 4 个不同的表中。我需要在主页上显示 CategoryName 和专辑以及它们受人尊敬的图标并将它们链接到 AlbumCategoryPage.aspx。
为了实现这一点,我正在使用嵌套中继器控件。
Parent Repeater 将显示类别图像(以红色显示),然后显示同一类别中的前 4 个专辑,依此类推。
到目前为止,我已经这样做了
<asp:Repeater ID="rptAlbumCategory" runat="server" OnItemDataBound="rptAlbumCategory_ItemBound">
<ItemTemplate>
<!-- Repeated data -->
<div class="AlbumRowWrapper">
<div id="dAlbumCategory" class="AlbumCategoryIcon">
<asp:Image ID="Image1" ImageUrl='<%# getImagePath(Eval("CategoryImage")) %>' runat="server" />
</div>
</div>
<asp:Repeater ID="rptAlbums" runat="server" >
<ItemTemplate>
<!-- Nested repeated data -->
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
代码背后
页面加载时
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ //Get Gallery
DataSet dsAlbumCat = new DataSet();
string strSql = "SELECT * FROM AlbumCategory)";
dsAlbumCat = DataProvider.Connect_Select(strSql);
rptAlbumCategory.DataSource = dsAlbumCat;
rptAlbumCategory.DataBind();
}
}
protected void rptAlbumCategory_ItemBound(Object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
Repeater childRepeater = (Repeater)e.Item.FindControl("rptAlbumCategory");
// childRepeater.DataSource = getAlbums();
// childRepeater.DataBind();
}
}
protected void getAlbums()
{
DataSet dsAlbums = new DataSet();
string strSql = "SELECT * FROM AlbumName WHERE CategoryID = " + CategoryID + ")";
dsAlbums = DataProvider.Connect_Select(strSql);
rptAlbums.DataSource = dsAlbums;
rptAlbums.DataBind();
}
protected String getImagePath(object img)
{
string url;
url = "~/Images/gallery/" + img;
return url;
}
使用此代码,我可以获得以下结果。
我不确定如何将 CategoryID 从父转发器传递给子转发器,以便它向我显示相关专辑。
我第一次使用嵌套中继器并发现它令人困惑,因为我找不到与我的场景相关的完整示例
表结构
TABLE AlbumCategory
CategoryID
CategoryName
CategoryImageIcon
CategoryVisible
LanguageID
TABLE AlbumName
AlbumID
AlbumName
AlbumDescription
AlbumImageIcon
CategoryID
LanguageID
我将不胜感激在这方面的帮助,甚至是完成与第一张图片中显示的相同设计的最佳方法