0

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. 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
2
  • Is artist.aspx any result set in your dataset or a web page of your application ? If web page then do you really need to use Eval for this ? Commented Jul 9, 2021 at 2:48
  • Yes, artists,aspx lists artists and albums.aspx will list the artist and their albums. I'm not sure about Eval. I used an example I found. Commented Jul 9, 2021 at 18:04

2 Answers 2

0

Try it this way.

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist") + ".aspx" %>'  Text='<%# Eval("Artist") %>' />
Sign up to request clarification or add additional context in comments.

Comments

0

Thomson Mixab gave the answer in code. Which is: <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Artist") + ".aspx" %>' Text='<%# Eval("Artist") %>' />

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.