2009-12-04 8 views
17

Je souhaite générer une liste des titres d'actualités pouvant être cliqués. Jusqu'à présent, je peux l'obtenir pour imprimer une liste de titres parce que j'ai fait glisser et déposer la table NewsHeadline en mode concepteur dans VS 2010. Comment pensez-vous que je devrais rendre les éléments de la liste cliquables? J'ai cherché un attribut d'URL mais je ne l'ai pas vu. Ai-je besoin d'envelopper dans un < un href?Ajout d'une colonne de lien à ASP.NET GridView

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="SqlDataSource1" 
     EmptyDataText="There are no data records to display."> 
     <Columns> 
      <asp:BoundField DataField="NewsHeadline" HeaderText="NewsHeadline" 
       SortExpression="NewsHeadline" /> 
     </Columns> 
    </asp:GridView> 

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>" 
     SelectCommand="SELECT [NewsHeadline] FROM [NewsTable]"></asp:SqlDataSource> 
    </form> 

Répondre

28

Vous devez remplacer le type de colonne d'une colonne Colonne par une colonne Lien hypertexte.

<asp:hyperlinkfield headertext="NewsHeadline" 
     datatextfield="NewsHeadline" 
     datanavigateurlfield="NewsURL" 
     datanavigateurlformatstring="http://{0}" /> 

En plus de ce changement, vous devez vous assurer que vous sélectionnez l'URL ou quelque chose que vous pouvez utiliser pour créer le lien vers l'article de nouvelles. Dans l'exemple ci-dessus, je suppose que l'URL est quelque chose que vous pouvez récupérer dans votre source SQL. Si c'est un ID, tapez simplement le reste de l'URL comme ceci ... "~/MyNewsPage.aspx? NewsID = {0}" ...

+2

Je devais utiliser DataNavigateUrlFields est-ce une chose .NET 4? –

3

Vous devez utiliser un champ de lien hypertexte au lieu d'un BoundField , comme ceci:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" 
    EmptyDataText="There are no data records to display."> 
    <Columns> 
     <asp:HyperLinkField HeaderText="NewsHeadline" SortExpression="NewsHeadline" DataTextField="NewsHeadline" NavigateUrl="..." /> 
    </Columns> 

9

utilisation hyperlinkfield à la place:

<asp:hyperlinkfield datatextfield="NewsHeadline" 
     datanavigateurlfields="NewsID" 
     datanavigateurlformatstring="~\newsdetails.aspx?Id={0}" /> 
+0

Solution soignée .. – dincerm

3

Quelque chose comme ça un travail fantastique comme une solution dans Visual Studio 2010.

  1. Créer une GridView dans l'onglet Designer de votre page Web dans VS.
  2. Passez la souris sur le GridView et cliquez sur la flèche qui apparaît en haut à droite. Accédez à "Choisir la source de données" et sélectionnez "nouvelle source de données ..."
  3. Créez la chaîne de connexion à votre base de données et choisissez la table NewsHeadline.
  4. Écrire la requête SELECT News_Id, NewsHeadline FROM NewsHeadline
  5. Terminez la configuration. Maintenant, du code devrait être généré dans l'onglet Source. Cela va également créer un SqlDataSource qui est maintenant le DataSource de votre GridView.
  6. Accédez à l'emplacement du code GridView dans l'onglet Source et remplacez-le par le code suivant.

code:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="Id" DataSourceID="SqlDataSource1"> 
    <Columns> 
    <asp:HyperLinkField 
      DataNavigateUrlFields="News_Id" 
      DataNavigateUrlFormatString="~\newsdetails.aspx?News_Id={0}" 
      DataTextField="NewsHeadline" 
      HeaderText="News HeadLines" 
      SortExpression="NewsHeadline" /> 
    </Columns> 
</asp:GridView> 

Et vous êtes tous ensemble.Cela créera une liste de tous les titres sous forme de liens hypertexte avec un lien unique généré dynamiquement vers les compliments newsdetails.aspx page de la chaîne de requête que nous avons construit en utilisant le PRIMARY KEYNews_Id correspondant à chaque entrée NewsHeadline dans la table NewsHeadline.

Ensuite, lorsque vous chargez le vous utiliser la page newsdetails.aspx: Request.QueryString["News_Id"] pour obtenir la valeur News_Id de l'URL et l'utiliser pour interroger la base de données pour les détails au sujet de la NewsHeadline spécifique qui a été cliquée. Vous pouvez ensuite afficher le résultat de cette requête sur la page Web.

Questions connexes