2010-04-04 7 views
0

J'essaye de créer une table avec Listview et l'un des champs que j'utilise est supposé montrer un lien hypertexte vers une vue plus détaillée des données montrées, comment je veux Pour ce faire en utilisant FindControl sur l'ID de cet élément, puis en changeant la valeur dans un lien hypertexte de la page de vue détaillée avec une chaîne de requête attachée, le problème est que je ne sais pas comment ré-insérer ces données dans la liste domaine, qui ressemble à ceci:Comment modifier les valeurs des éléments ListView dans Codebehind

    <ItemTemplate> 
        <td> 
        <asp:Label ID="ViewLinkLabel" runat="server" 
         Text='[insert Link Here]' /> 
        </td> 
        </ItemTemplate> 

S'il vous plaît garder à l'esprit que je suis encore un amateur en ASP.net, et si tout cela semble trop compliqué quand il est beaucoup plus facile de faire ce que je don Je ne sais pas.

Merci

Répondre

1

Je n'ai pas assez réputation de laisser des commentaires ou modifier les messages, mais l'exemple de code dans le poste de Richard Harrison a quelques problèmes:

protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e)     
    { 
     try 
     { 
      HyperLink ViewLinkLabel = (HyperLink)e.Item.FindControl("ViewLinkLabel"); 
      ViewLinkLabel.NavigateUrl = "http://www.example.com/"; 
     } 
     catch 
     { 

     } 
    } 

Idéalement, vous devriez également vérifier si ViewLinkLabel est nul avant de l'utiliser.

Cela suppose également que le contrôle ViewLinkLabel est un HyperLink mais dans la question, il s'agit en fait d'un contrôle Label.

+0

cela a fonctionné, merci. – Viredae

0

Modifier l'étiquette à un lien hypertexte et utiliser l'événement OnItemDataBound sur le listview de modifier l'élément: quelque chose comme.

protected void ContactsListView_ItemDataBound(object sender, ListViewItemEventArgs e)     
    { 
     try 
     { 
      HyperLink ViewLinkLabel = (HyperLink)e.Item.FindControl("ViewLinkLabel"); 
      lnkEvent.NavigateUrl += "http://required.url; 
     } 
     catch 
     { 

     } 
    } 

ListView.ItemDataBound Event pour plus de détails

0

Ouais vous avez fait quelques erreurs ici. Tout d'abord si vous alliez faire cela, vous voulez utiliser un <asp:Hyperlink> au lieu d'un <asp:Label>.

également au lieu d'essayer de trouver le contrôle dans le code sous-jacent et définir sa valeur que vous utiliserez probablement une déclaration de liaison de données dans le balisage.

Cela ressemblerait à ceci:

<ItemTemplate> 
    <td> 
    <asp:HyperLink ID="ViewLinkLabel" runat="server" Text="More details" 
     NavigateUrl='<%# string.Format("~/DetailPage.aspx?ID={0}", Eval("RecordID")) %>' /> 
    </td> 
</ItemTemplate> 

Le modèle que vous faites référence est appelé maître/détail. Cela signifie que vous avez une liste principale qui vous permet d'explorer les détails. Il y a un tas de tutoriels qui expliquent différentes façons de configurer cela sur le site asp.net officiel:

Ils ont été écrits avant asp.net 3.5 est sorti de sorte qu'ils ne le font pas couvrez le contrôle listview mais ils vous expliqueront comment configurer master/detail et comment fonctionne la syntaxe de liaison de données. Si vous avez parcouru les 25 premiers tutoriels dans cette série d'accès aux données, alors vous auriez une compréhension assez solide de la façon dont beaucoup de fonctionnalités asp.net fonctionnent. La technologie d'accès aux données qu'il utilise est un peu démodée, mais elle est facile à utiliser.

Questions connexes