Datalist不绑定HeaderTemplate

时间:2014-01-01 20:08:38

标签: c# asp.net webforms datalist

我有DataList并且我在标头中添加了绑定特定值,我完成了我的代码,但是当我尝试点击标题<a href >时,它没有重定向到网址。< / p>

 <asp:DataList ID="DL_ElarabyNews" runat="server" RepeatColumns="0">
                    <HeaderTemplate>
                        <div class="araby-news-title">
                            <a href='<%#Eval("ArtType_ID","NewsPage.aspx?ArtTypeID="+ Eval("ArtType_ID"))%>'>
                                </a>
                        </div>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <div class="all-ads-conatiner">
                            <div class="single-ads-conainer">
                                <div class="ads-img">
                                    <asp:Image ID="Img_Elaraby" alt="Lastweek" runat="server" ImageUrl='<%# Eval("Art_Img")%>'
                                        Width="47" Height="34" />
                                </div>
                                <div class="ads-text">
                                    <a href='<%#Eval("Art_ID","NewsDetailsPage.aspx?ArtID="+ Eval("Art_ID"))%>'>
                                        <%# Eval("Art_Title")%>
                                    </a>
                                </div>
                            </div>
                        </div>
                    </ItemTemplate>
                </asp:DataList>

2 个答案:

答案 0 :(得分:0)

你在做什么并没有多大意义。

如果datalist中有10个项目,那么标题显示哪个?

答案 1 :(得分:0)

看起来您的数据源是按ArtType_ID过滤的,并且您希望在DataList标头中有一个链接以将ID传递给NewsPage.aspx

问题是,Header不会重复使用item.So您无法使用ArtType_ID绑定<a>。但是你可以有一个简单的解决方法。

在代码中添加名为ArtType的属性和名为GetArtType的方法,并将数据源绑定到DataList,获取ArtType_ID,保存在ArtType中:

public string ArtType { get; set; }

public string GetArtType()
{
    return ArtType;
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //datasource is the name of your datasource 
        ArtType = datasource.First().ArtType_ID.ToString();
        DL_ElarabyNews.DataSource = datasource;
        DL_ElarabyNews.DataBind();
    }
}

现在在标记中你可以访问GetArtType,你的HeaderTemplate应该是这样的:

<HeaderTemplate>
    <div class="araby-news-title">
        <a href='NewsPage.aspx?ArtTypeID=<%# GetArtType()%>'>Test</a>
    </div>
</HeaderTemplate>

希望它有所帮助!