【问题标题】:Looping through a specific dataset column to check if it contains a certain value循环遍历特定的数据集列以检查它是否包含某个值
【发布时间】:2016-11-15 14:47:15
【问题描述】:

我加载了一个 datagridview 并试图找到一种快速循环某个列的方法,给定列名....

这就是我的数据网格视图的加载方式......

ad = New SqlDataAdapter(sql, con)
ad.Fill(ds, "Fields")
dgvFields.DataSource = ds.Tables("Fields")

dgvFields.ReadOnly = True
dgvFields.RowHeadersVisible = False

dgvFields.Columns(0).Width = 156
dgvFields.Columns(1).Width = 156
dgvFields.Columns(2).Width = 156
dgvFields.Columns(3).Width = 157

'现在我希望能够遍历 dgvfields.columns(3) 或列名“Field1a”并检查是否 dgvfields.rows="ValueA"

类似的东西...

   For Each row As DataRow In dgvFields.Columns(5)
       if dgvfields.rows.value="ValueA" then
          'do something
       End if

   Next

【问题讨论】:

  • 扫描数据表而不是控件 - sn-p 混合和匹配 DT 和 DGV 元素。请参阅Get DataGridView cell value 了解 vb、循环版本

标签: vb.net loops datagridview rows


【解决方案1】:

问题是您正在为您的行寻找的类型...DataRowDataTable 不是 DataGridViewRow...我会推荐使用索引...

注意:这可以通过多种方式完成。

For i As Integer = 0 To dgvFields.Rows.Count - 1
       If dgvfields.Rows(i).Cells("THE COLUMN NAME").Value="ValueA" Then
          'do something
       End if    
Next

【讨论】:

  • @ 谢谢你,现在如果我想更改我正在寻找的值的特定行的颜色? dgvfields.rows(i).defaultcellstyle.backColor = color.blue 似乎不起作用:/
  • 它确实有效,您是否在加载事件中这样做,如果是这样,它将不起作用。 dgvfields.Rows(i).DefaultCellStyle.BackColor = YOURCOLOR 可以工作,但不能在负载上完成,因为它会阻止单元格被更改。查看RowPostPaint,如果您愿意,可以在其中更改颜色,这发生在抽取 DataGridView 消息之后。
  • 好吧,我正在从 LOAD 调用一个函数来填充网格
  • 没关系,然后在我在上一条评论中所说的事件上执行...好像从负载(实例化)中执行它会阻止颜色的更改...如果我回答了您的原始问题请接受答案。另一方面,请不要在 cmets 内问其他问题,这是不礼貌的,除非他们阅读 cmets,否则无论如何都没有人看到它;创建另一个问题。
猜你喜欢
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2014-05-26
相关资源
最近更新 更多