0

写真アルバムを持っている年のリストを表示する必要があります。これには Repeater コントロールを使用し、div コントロール内でラッパー年を使用します。また、現在の年を として渡しQueryStringます。div の背景として現在の年を赤で表示する必要があります。を渡すことができないため、パネルは常に null を返しますObject Sender, RepeaterItemEventArgs e。CssClass をコード ビハインドから変更できるように、このコードを変更するにはどうすればよいですか。

Literal Control年のリストをリストとして使用して表示することで、同じために別のアプローチを使用<ul>できます...これを使用して、リストのcssを完全に制御できます。

これを最善かつ効果的な方法で達成する方法をアドバイスしてください。また、将来的に役立つ可能性があり、私にとって非常に教育的である可能性があるため、私がやろうとしている方法でやり遂げようとしています

http://localhost:65123/Gallery/Albums.aspx?Year=2011&PageID=38

<asp:Repeater ID="rptAlbumsYears" runat="server" >
    <ItemTemplate>
        <div class="AlbumPageYearListing">
            <asp:HyperLink ID="hyplnkCat1" runat="server" NavigateUrl='<%# getAlbumURLbyCat(Eval("Year"))%>'>
                <asp:Panel ID="pnlYear" runat="server">
                    <asp:Label ID="lblAlbumYear" runat="server" Text='<%# Eval("Year")%>'></asp:Label>
                </asp:Panel>
            </asp:HyperLink>
        </div>
    </ItemTemplate>
</asp:Repeater>

.CS コード

protected String getAlbumURLbyCat(object Year)
{
    string url;
    int PageID = Helper.GetPageIDbyName("Albums.aspx", "en-us");
    url = "~/Albums.aspx?Year=" + Year + "&PageID=" + PageID;
    try
    {
        int CurYear = 0;
        CurYear = int.Parse(Request["Year"].ToString());
        int iYear = int.Parse(Year.ToString());
        //Image imgArticleList = (Image)e.Item.FindControl("imgArticleList") as Image;
        Panel pnlYear = (Panel)FindControl("pnlYear");

       // Panel pnlYear = (Panel) 
        if (CurYear == iYear)
        {
            pnlYear.CssClass = "AlbumPageYearListingCurrent";
        }
    }
    catch (Exception ex)
    {
    }
4

1 に答える 1

0

次のコードを使用して解決された問題

protected void rptAlbumsYears_ItemBound(Object Sender, RepeaterItemEventArgs e)
{
    try
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView drv = (DataRowView)e.Item.DataItem;
            int Year = Convert.ToInt32(drv["Year"]);
            Repeater Repeater2 = (Repeater)e.Item.FindControl("rptAlbumsYears");
            Panel pnlYear = (Panel)e.Item.FindControl("pnlYear");
            int CurYear = 0;
            CurYear = int.Parse(Request["Year"].ToString());
            if (CurYear == Year)
            {
                pnlYear.CssClass = "AlbumPageYearListingCurrent";
            }
        }
    }
    catch (Exception ex)
    {
        throw;
    }
}
于 2012-09-09T07:08:58.563 に答える