【问题标题】:The Datalist doesnot bind HeaderTemplateDatalist 不绑定 HeaderTemplate
【发布时间】:2023-04-02 15:55:01
【问题描述】:

我有 DataList 并在标题中添加了绑定特定值,我的代码做得很好,但是当我尝试点击标题 <a href > 时,它不会重定向到 URL。

 <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>

【问题讨论】:

  • 渲染出来的 HTML 是什么样子的?

标签: c# asp.net webforms datalist


【解决方案1】:

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

问题是,标题不会与 item 重复。所以你不能将 &lt;a&gt; 与 ArtType_ID 绑定。但是您可以有一个简单的解决方法。

在代码中添加一个名为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>

希望对你有帮助!

【讨论】:

    【解决方案2】:

    你在做什么没有真正的意义。

    如果datalist中有10项,标题应该显示哪一项?

    【讨论】:

    • 这里的问题
    • 当我点击一个 href 它没有给我带有查询字符串“ArtTypeID”的网址
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2013-12-05
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多