DataGridView und DataGridViewLinkColumn linkt nicht

12/10/2009 - 14:52 von Christian Stüben | Report spam
Hallo allerseits,
ich habe in eine Winform ein DataGridView, darin eine
DataGridViewLinkColumn.

dgv_al.Rows[i].Cells["maps_google_de"].Value =
"http://maps.google.de/?ie=UTF8&...8339&z"

Problem: beim Klicken auf die Zelle wird nicht verlinkt, d.h. der
Standard-Browser wird nicht gerufen, keinerlei Reaktion

Kopiere ich den Zelleninhalt mit ctrl-c und setze ihn in der Adresszeile des
Browsers ein, kommt die gewünschte Webseite.



Habe ich bei der DataGridViewLinkColumn etwas falsch verstanden? Habe ich
etwas vergessen oder übersehen?

mfg Chris
 

Lesen sie die antworten

#1 Peter Götz
12/10/2009 - 17:53 | Warnen spam
Hallo Christian,

Hallo allerseits,
ich habe in eine Winform ein DataGridView, darin eine
DataGridViewLinkColumn.

dgv_al.Rows[i].Cells["maps_google_de"].Value > "http://maps.google.de/?ie=UTF8&...8339&z"

Problem: beim Klicken auf die Zelle wird nicht verlinkt, d.h. der
Standard-Browser wird nicht gerufen, keinerlei Reaktion



Na ja, reagieren musst Du in Deinem Code, z.B. in der Ereignis-
prozedur DataGridView_CellContentClick()

Kopiere ich den Zelleninhalt mit ctrl-c und setze ihn in der
Adresszeile des Browsers ein, kommt die gewünschte Webseite.

Habe ich bei der DataGridViewLinkColumn etwas falsch
verstanden? Habe ich etwas vergessen oder übersehen?



Ja scheint so.

Hier ein Beispiel:

' /// Code in einer leeren Form1.vb
Public Class Form1
Private WithEvents DGV As DataGridView
Private mDT As DataTable
Private mDV As DataView


Private Sub Form1_Load _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load

DGV = New DataGridView
With DGV
.Dock = DockStyle.Fill
.DefaultCellStyle.Font = _
New Font("Arial", 12)

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)

.AutoGenerateColumns = False
.Columns.Add("ID", "ID")
.Columns(0).DataPropertyName = "ID"

.Columns.Add("Text", "Text")
.Columns(1).DataPropertyName = "Text"

Dim LC As DataGridViewLinkColumn = _
New DataGridViewLinkColumn

With LC
.Name = "Link"
.HeaderText = .Name
.UseColumnTextForLinkValue = False
.LinkBehavior = LinkBehavior.SystemDefault
.ValueType = GetType(String)
.DataPropertyName = .Name
.LinkColor = Color.Blue
.VisitedLinkColor = Color.Red

'.TrackVisitedState = True
End With
.Columns.Add(LC)
End With
Me.Controls.Add(DGV)

CreateData()

DGV.DataSource = mDV
DGV.AutoResizeColumns()

End Sub

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow

Dim Links() As String = _
New String() _
{"www.microsoft.com", _
"www.gssg.de", _
"www.google.de", _
"www.reichelt.de", _
"www.conrad.de"}

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("Text", GetType(String))
.Columns.Add("Link", GetType(String))

For i = 1 To 5
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = "Zeile " & i.ToString
DR.Item(2) = Links(i - 1)
.Rows.Add(DR)
Next
.AcceptChanges()
End With

mDV = New DataView(mDT)

End Sub

Private Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs _
) Handles DGV.CellContentClick

If e.ColumnIndex = 2 Then
Dim Target As String = DGV.CurrentCell.Value.ToString
System.Diagnostics.Process.Start(Target)
End If
End Sub
End Class
' \\\ E N T E

Alles klar?

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen