单击按钮时计算datagridview列中的单词数

时间:2015-01-13 17:40:24

标签: vb.net gridview datagridview

在我的表单中,我的表单中有一个按钮和2个标签(当然还有datagridview)。我想要实现的是当用户点击按钮时,它将显示datagridview列中有多少特定文本。

我有一个名为“Domestic_Animals”的列,有两个单独的面板,一个用于狗,一个用于猫。当用户单击“在GridView中计算多少只狗”按钮时,它将显示gridview中有多少“狗”文本。与“猫”按钮相同。

/*DOMESTIC_ANIMALS/
Dog
Cat
Cat
Cat
Dog

<btnDogs> (the user clicks this) : Label1.Text = 2
<btnCats< (the user clicks this):  Label2.Text = 3

有关详细信息,我的datagridview是有限数据。因此,用户可以在INSERT查询中添加更多的狗和猫。因此,狗的答案不应该总是“2”,猫的答案不应该是“3”,而是代码确实计算了数据网格视图中有多少猫字或狗字。

任何建议都会对我有帮助。

编辑: 答案在底部。

2 个答案:

答案 0 :(得分:0)

如果您可以访问后端数据(例如使用实体框架),则可以使用linq查询

    Dim arr = {"Dog", "Cat", "Cat", "Cat", "Dog"}
    Dim countDogs = arr.Where(Function(f) f = "Dog").Count
    Dim countCats = arr.Where(Function(f) f = "Cat").Count

只需在您的EF上下文中将arr替换为相关集合即可。

如果没有,我认为你可以使用linq来访问dgv的后端数据源,因为它没有强类型,所以你必须做这样的事情,假设你要搜索的条目在第一栏:

    Function CountAnimal(strToLookFor as String) as Integer
            Dim row As DataGridViewRow
            Dim count As Integer = 0

            For lp = 0 To PortfoliosGrid.Rows.Count - 1
                If PortfoliosGrid.Rows(lp).Cells(0).Value = strToLookFor Then
                    count += 1
                End If
            Next

            Return count
     End Function

答案 1 :(得分:0)

以下代码解决了我的问题:

Dim x As Integer = 16

lblRows2.Text = (From Rows In DataGridView1.Rows.Cast(Of DataGridViewRow)() Where Not Rows.IsNewRow AndAlso Rows.Cells(x).Value.ToString = "Dog").Count

此代码表示标签将计算列中“狗”字的数量。