2009-09-03 24 views
0

我使用Visual Studio 2008的datagridview的WinForm的标签只带回了第一行值

我有一个WinForm一个DataGridView。我已经使用对象

Private Sub LoadAllCampers() 
    Dim Os As List(Of LE.Camper) = Nothing 
    Dim Oc As New LE.Camper_Controller 
    Os = Oc.GetCamperData(0) 

    With Me.dgResults 
     .DataSource = Os 
    End With 
    CamperBindingSource.DataSource = Os 
End Sub 

我对坎珀类中的ID属性标签设置绑定到它。当我双击datagridview中的一行时,我做了一个me.dgResults.tag,它总是显示第一行的ID值。如果我在类中更改排序,它将显示不同的值,但它始终是datagridview中的第一个值。

我错过了一些简单的事情来得到这个工作..只是不知道它是什么。 希望有人可以腾出一分钟。

回答

0

行:

Os = Oc.GetCamperData(0) 

看起来有点可疑我。

这是一段时间,因为我已经做了任何VB.NET,但看起来它是获取数组/列表对象的第一个索引。

将网格视图的DataSource绑定到数据的其余代码看起来没问题。

+0

我找到了答案.. dgResults.DataBindings.Add(“变量”,OS“ CamperId“)...这增加了我需要在调用数据时能够使用”标签“的绑定,否则可能使用了行。(rowindex)。 感谢您的回复 – jvcoach23 2009-09-09 11:56:31

0

“我做了me.dgResults.tag”

你的意思是你做这样的事?

Dim value As Object = Me.dgResults.Tag 

DataGridView的标签属性只是一个连接到DataGridView在一般情况下,不特定行一个单一的信息。

DataGridView的每一行中还有一个Tag属性。比方说,你想在指数获得该行的标签的rowIndex,你可以做这样的:

Dim value As Object = Me.dgResults.Rows(rowIndex).Tag 

...但我不知道为什么你会使用标签。由于您使用数据绑定,你可以绑定到一个DataGridView的行中的对象,并访问是这样的性质:

Dim row as DataGridViewRow = Me.dgResults.Rows(rowIndex) 
Dim camper as LE.Camper = CType(row.DataBoundItem, LE.Camper) 
Dim camperId = camper.Id