6 votes

Comment lier List<string> dans ListView dans WebForms

J'ai un List<string> que j'aimerais lier à ma collection d'images. ListView .

Voici le balisage de mon ListView :

<asp:ListView ID="lvList" runat="server">

        <LayoutTemplate>         
            <div id="Div1" runat="server">              
                <div ID="itemPlaceholder" runat="server">              
                </div>         
            </div>      
        </LayoutTemplate>

        <EmptyDataTemplate>         
            <div id="Div2" runat="server">              
                <div ID="itemPlaceholder" runat="server">                 
                No data was returned.             
                </div>         
            </div>      
        </EmptyDataTemplate>

        <ItemTemplate>
            <asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval ("theList") %>'/>
        </ItemTemplate>

</asp:ListView>

dans mon CodeBehind :

protected void Page_Load(object sender, EventArgs e)
{         
    List<string> theList = new List<string>();
    //populate members of list
    lvList.DataSource = theList;
    lvList.DataBind();
}

Message d'erreur :

System.Web.HttpException n'a pas été gérée par le code de l'utilisateur
Message="DataBinding : System.String' ne contient pas de propriété avec le nom le nom 'theList'."

Je pense que je m'y prends mal, quelqu'un peut-il me conseiller ?

13voto

ionden Points 5595

Utilisation '<%# Container.DataItem %> :

<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Container.DataItem %>'/>

1voto

Dave Points 260

<asp:Label ID="ProductNameLabel" runat="server" Text='<%# Eval ("theList") %>

Cette ligne est à l'origine du problème parce que vous faites référence à la propriété "theList" dans l'élément actuel de la liste, mais la liste n'a pas d'autres propriétés que les chaînes de caractères qu'elle contient.

La solution consisterait à mettre en œuvre la méthode dans le code qui la sous-tend, par exemple

protected void Test(object obj)
{
    return obj.ToString();
}

et dans le fichier aspx :

 <asp:Label ID="ProductNameLabel" runat="server" Text='<%# Test(Container.DataItem) %>

Je ne l'ai pas testé, mais il devrait faire l'affaire.

1voto

Tanzeel ur Rehman Points 429

EVAL est utilisé sur une valeur clé unique, le contrôle lié aux données parcourt la collection du début à la fin et se place un par un à l'endroit où vous avez placé l'instruction eval.

La réponse à ce lien peut donner une meilleure idée. Comment récupérer l'objet courant d'une collection à l'aide de DataBinder.Eval ?

J'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X