简体   繁体   English

使 asp:HyperLink 成为 asp:DataList 中的列表项

[英]Make asp:HyperLink the list items in an asp:DataList

I have searched for a solution but something is missing and I don't know what it is.我已经寻找了一个解决方案,但缺少一些东西,我不知道它是什么。 All of the code below works fine except asp:HyperLink gives me an error.下面的所有代码都可以正常工作,除了asp:HyperLink给我一个错误。 I only need one我只需要一个

column with links for each Artist.每个艺术家的链接列。 The current code does fill a one column table.当前代码确实填充了一个单列表。 But I need each item to be a link.但我需要每个项目都是一个链接。

Code:代码:

<asp:DataList ID="DataListArtists" runat="server" DataSourceID="SqlDataSourceArtists">
    <ItemTemplate>  
        <table class="table">  
            <tr>  
                <th colspan="2">  
                    <b>  
                    <%# Eval("Artist") %></b>  
                </th>  
            </tr>  
        </table>
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist.aspx") %>'  Text='<%# Eval("Artist") %>' />
        </asp:HyperLink>
    </ItemTemplate>
</asp:DataList>

Error:错误:

DataBinding: 'System.String' does not contain a property with the name 'aspx'.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it   
    originated in the code.

    Exception Details: System.Web.HttpException: DataBinding: 'System.String' does not contain a property with the name 'aspx'.

    Source Error:
    Line 82:                 </tr>  
    Line 83:             </table>
    Line 84:             <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist.aspx") %>'  Text='<%# Eval("Artist") %>' />
    Line 85:         </ItemTemplate>

Stack Trace:堆栈跟踪:

   [HttpException (0x80004005): DataBinding: 'System.String' does not contain a property with the name 'aspx'.]
    System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +8764405
    System.Web.UI.DataBinder.Eval(Object container, String[] expressionParts) +92
    System.Web.UI.DataBinder.Eval(Object container, String expression) +106
    System.Web.UI.TemplateControl.Eval(String expression) +40
    ASP.artists_aspx.__DataBinding__control7(Object sender, EventArgs e) in c:\Users\lookerup\Desktop\mystuff\programming\apps\FlatbushMusic\FlatbushMusic\Artists.aspx:84
    System.Web.UI.Control.OnDataBinding(EventArgs e) +99
    System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +92
    System.Web.UI.Control.DataBind() +15
    System.Web.UI.Control.DataBindChildren() +211
    System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
    System.Web.UI.Control.DataBind() +15
    System.Web.UI.WebControls.DataList.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +125
    System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +459
    System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +54
    System.Web.UI.WebControls.BaseDataList.DataBind() +55
    System.Web.UI.WebControls.BaseDataList.EnsureDataBound() +60
    System.Web.UI.WebControls.BaseDataList.CreateChildControls() +69
    System.Web.UI.Control.EnsureChildControls() +87
    System.Web.UI.Control.PreRenderRecursiveInternal() +44
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Control.PreRenderRecursiveInternal() +171
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

试试这个方法。

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist") + ".aspx" %>'  Text='<%# Eval("Artist") %>' />

Thomson Mixab gave the answer in code. Thomson Mixab 在代码中给出了答案。 Which is: <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist") + ".aspx" %>' Text='<%# Eval("Artist") %>' />即: <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist") + ".aspx" %>' Text='<%# Eval("Artist") % >' />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM