如果vb.net中的行中没有数据,则隐藏datagridview

时间:2015-04-13 07:05:49

标签: vb.net datagridview

您好我已经创建了一个搜索框,如果文本框中输入了任何内容,则会在datagrid视图中获取数据,但我的问题是当数据库中没有输入某些内容时,数据网格视图也是可见的。如果数据在数据库中不可用,我想隐藏gridview。

If (txtpname.Text <> "") Then
        Try
            con = New System.Data.OleDb.OleDbConnection(connectionString)
            con.Open()
            Dim ds As DataSet = New DataSet
            Dim adapter As New OleDb.OleDbDataAdapter
            Dim sql As String
            Dim s As String
            s = txtpname.Text
            sql = "SELECT product_name as `Product` , rate as `Rate`,category as `Category`, product_id as `pid` FROM products where product_name like '" & (s) & "%' AND deleted='N' order by product_id ;"
            adapter.SelectCommand = New OleDb.OleDbCommand(sql, con)
            adapter.Fill(ds)
            dgvitmsearch.DataSource = ds.Tables(0)
            dgvitmsearch.Columns("Product").Width = 220
            dgvitmsearch.Columns("Rate").Visible = False
            dgvitmsearch.Columns("Category").Width = 148
            dgvitmsearch.Columns("pid").Visible = False
            con.Close()


        Catch ex As Exception
            MsgBox("error found")
        End Try

在txtpname_TextChanged

中调用上述函数

2 个答案:

答案 0 :(得分:1)

检查datagridview是否有行计数&lt; 0,如果没有隐藏它。在指定数据源之后添加它。

if dgvitmsearch.rows.count=0 then 

dgvitmsearch.visible=false

end if

这将起作用

答案 1 :(得分:0)

最好检查您的dataset(ds)表格ds.Tables是否有行,并在填写IF之前写下datagrid条件如下所示

If ds.Tables(0).Rows.Count > 0 Then

'fill datagrid with your dataset

else

'change visibility here(false)

End If

实际代码应该写成:

  If ds.Tables(0).Rows.Count > 0 Then
        dgvitmsearch.DataSource = ds.Tables(0)
        dgvitmsearch.Columns("Product").Width = 220
        dgvitmsearch.Columns("Rate").Visible = False
        dgvitmsearch.Columns("Category").Width = 148
        dgvitmsearch.Columns("pid").Visible = False
  Else
        dgvitmsearch.visible = False
  End If