PDA

Vollständige Version anzeigen : Datagrid selected Row


murer
15.08.2006, 16:12
Hallo Forum


vb.net
VS 2003

Habe ein Datagrid gefüllt mit Daten aus einer Datatable. Der Anwender selektiert mehrere Zeilen. Nun möchte ich herausfinden welche Zeilen er selektiert hat.

Finde keine passende Methode dazu. Hat mir jemand ein Tip ???

Gruss
murer ;)

Joachim Hofmann
15.08.2006, 16:54
Geht nicht, Gibts nicht.
Du mußt alle Zeilen durchgehen und auf IsSelected prüfen.
Beispiel (hier wird Inhalt von Spalte 0 an einen String-Builder sbAuflHauptKey kommasepariert angehangen)
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet">

<font color="#6a5acd">For</font> i = <font color="#ff00ff">0</font> <font color="#6a5acd">To</font> myDataGrid.VisibleRowCount - <font color="#ff00ff">1</font>
<font color="#804040"><b>If</b></font> myDataGrid.IsSelected(i) <font color="#804040"><b>Then</b></font>
sbAuflHauptKey.Append(myDataGrid(i, <font color="#ff00ff">0</font>))
sbAuflHauptKey.Append(<font color="#ff00ff">&quot;,&quot;</font>)
iAnzahlGewaehlt += <font color="#ff00ff">1</font>
<font color="#804040"><b>End</b></font> <font color="#804040"><b>If</b></font>
Next

</div>

Noodles
15.08.2006, 18:03
Windows Forms FAQ (http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx#q689q)

murer
16.08.2006, 11:00
Hallo Joachim
Hallo Noodles

Vielen Dank für die Hilfe.

Das Beispiel von Joachim entspricht meiner eigenen Variante und zeigt aber nur die selektierten Zeilen, welche zu Beginn im Datagrid sichtbar sind. Sobald man aber Zeilen selektiert, welche weit unten im Datagrid auftreten, werden diese mit der Joachim-Funktion nicht mehr als selektiert aufgelistet. Irgendwie hat das mit der Methode .VisibleRowCount zu tun.

Im Link von Noodles habe ich dann die Lösung gefunden:



Private Sub btnCopyItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopyItem.Click

Dim s As String = "Selected rows:"
Dim o As Object

For Each o In GetSelectedRows(dgrFoundItem)
s += " " + o.ToString()
Next o

MessageBox.Show(s)

End Sub

Public Function GetSelectedRows(ByVal dg As DataGrid) As System.Collections.ArrayList

Dim al As New ArrayList
Dim cm As CurrencyManager = Me.BindingContext(dg.DataSource, dg.DataMember)
Dim dv As DataView = CType(cm.List, DataView)

Dim i As Integer

For i = 0 To dv.Count - 1

If dg.IsSelected(i) Then
al.Add(i)
End If
Next

Return al

End Function 'GetSelectedRows


Nochmals danke, da ich heute mittag in die Ferien fahre, hätte mich dieses ungelöste Problem dauernd beschäftigt.

Grüsse
murer