23 Stimmen

Hinzufügen einer Link-Spalte zum ASP.NET GridView

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?

35voto

RSolberg Punkte 26515

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}"...

9voto

Canavar Punkte 46926

Verwenden Sie stattdessen HyperlinkField :

3voto

Scott Kirkland Punkte 588

Sie müssen ein Hyperlink-Feld anstelle eines BoundField verwenden, wie folgt:

3voto

Derek W Punkte 9268

Etwas Ähnliches wird fantastisch als Lösung in Visual Studio 2010 funktionieren.

  1. Erstellen Sie ein GridView im Designer-Tab Ihrer Webseite in VS.
  2. Bewegen Sie Ihre Maus über das GridView und klicken Sie auf den Pfeil, der oben rechts erscheint.
  3. Gehen Sie zu "Datenquelle wählen" und wählen Sie "neue Datenquelle...".
  4. Erstellen Sie die Verbindungszeichenfolge zu Ihrer Datenbank und wählen Sie die Tabelle NewsHeadline.
  5. Schreiben Sie die Abfrage SELECT News_Id, NewsHeadline FROM NewsHeadline
  6. Beenden Sie die Einrichtung. Jetzt sollte im Source-Tab etwas Code generiert werden. Dies wird auch ein SqlDataSource erstellen, das jetzt die Datenquelle Ihres GridView ist.
  7. 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.

2voto

Eddie Punkte 4846

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X