Ich möchte eine Liste von Nachrichtenschlagzeilen ausgeben, die anklickbar sind. Bisher kann ich sie nur ausgeben, weil ich die NewsHeadline-Tabelle im Designer-Ansicht in VS 2010 gezogen und abgelegt habe. Wie denken Sie, sollte ich die Listenelemente anklickbar machen? Ich habe nach einem URL-Attribut gesucht, aber ich habe es nicht gesehen. Muss ich sie in ein -Tag einfügen?
Antworten
Zu viele Anzeigen?Sie müssen den Spaltentyp von einem BoundColumn in eine Hyperlink-Spalte ändern.
Neben dieser Änderung müssen Sie sicherstellen, dass Sie die URL oder etwas anderes auswählen, das Sie verwenden können, um den Link zum Nachrichtenartikel zu erstellen. Im obigen Beispiel gehe ich davon aus, dass die URL etwas ist, das Sie aus Ihrer SQL-Quelle erhalten können. Wenn es sich um eine ID handelt, tippen Sie einfach den Rest der URL wie folgt aus... "~/MyNewsPage.aspx?NewsID={0}"...
Verwenden Sie stattdessen HyperlinkField :
Etwas Ähnliches wird fantastisch als Lösung in Visual Studio 2010 funktionieren.
- Erstellen Sie ein
GridView
im Designer-Tab Ihrer Webseite in VS. - Bewegen Sie Ihre Maus über das
GridView
und klicken Sie auf den Pfeil, der oben rechts erscheint. - Gehen Sie zu "Datenquelle wählen" und wählen Sie "neue Datenquelle...".
- Erstellen Sie die Verbindungszeichenfolge zu Ihrer Datenbank und wählen Sie die Tabelle NewsHeadline.
- Schreiben Sie die Abfrage
SELECT News_Id, NewsHeadline FROM NewsHeadline
- Beenden Sie die Einrichtung. Jetzt sollte im Source-Tab etwas Code generiert werden. Dies wird auch ein
SqlDataSource
erstellen, das jetzt dieDatenquelle
IhresGridView
ist. - Gehen Sie zum Code für Ihr
GridView
im Source-Tab und ersetzen Sie ihn durch den folgenden Code.
Code:
Und Sie sind fertig. Dies wird eine Liste aller Schlagzeilen als Hyperlinks erstellen, mit einem dynamisch generierten eindeutigen Link zur Seite newsdetails.aspx
, der durch die Abfragezeichenfolge erstellt wurde, die wir mit dem PRIMARY KEY
News_Id
erstellt haben, der jedem Eintrag von NewsHeadline
in der Tabelle NewsHeadline entspricht.
Wenn Sie dann die Seite newsdetails.aspx
laden, verwenden Sie: Request.QueryString["News_Id"]
, um den Wert von News_Id
aus der URL zu erhalten und ihn verwenden, um die Datenbank nach den Details zu der spezifischen NewsHeadline
abzufragen, auf die geklickt wurde. Sie können dann das Ergebnis dieser Abfrage auf der Webseite anzeigen.
Das HyperLinkField funktioniert wie von anderen erwähnt großartig. Wenn Sie jedoch möchten, dass die gesamte Zeile klickbar ist, können Sie ein benutzerdefiniertes Serversteuerelement verwenden, das ein GridView implementiert, wie im SO-Beitrag "Making an entire row clickable in a gridview" vorgeschlagen.
Schauen Sie sich die Frage an, die ich auf wie man ein C#-benutzerdefiniertes Serversteuerelement implementiert veröffentlicht habe.
Nur eine weitere Option.