VB.NET - Preenchendo um DataGrid somente leitura


Para exibir dados em um DataGrid no modo somente leitura , e assim , não permitir nenhuma alteração nos dados podemos fazer o seguinte:

Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : acesso_DB
  4. Location : c:\vbnet\acesso_DB

NO formulário form1.vb inclua um componente DataGrid com o nome dglivros. Vamos exibir o conteúdo da tabela books que esta no banco de dados livros.mdb.

Abaixo temos a esquerda a aparência do formulário com o DataGrid já formatado ; a direita o projeto em execução exibindo os dados.

O código que você deve incluir para fazer o serviço é:

Imports System.Data.OleDb

Public Class Form1
    Inherits System.Windows.Forms.Form

    
    Private Const SELECT_STRING As String = "SELECT * FROM books ORDER BY Title"

    ' Definindo o DataSet
    Private m_DataSet As DataSet

    ' Definindo um DataView para permitir acesso somente leitura 
    Private m_DataView As DataView

    ' carrega os dados
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim mome_BancoDados As String
        Dim string_conexao As String
        Dim data_adapter As OleDbDataAdapter

        ' Compoe o nome do banco de dados
        mome_BancoDados = Application.StartupPath()
        mome_BancoDados = mome_BancoDados.Substring(0, mome_BancoDados.LastIndexOf("\"))
        mome_BancoDados = mome_BancoDados & "\livros.mdb"

        ' Monta a string de conexao
        string_conexao = "Provider=Microsoft.Jet.OLEDB.4.0;"Data Source=" & mome_BancoDados

        ' Cria o  OleDbDataAdapter.
        data_adapter = New OleDbDataAdapter(SELECT_STRING, string_conexao)

        ' mapeia para a tabela Livros
        data_adapter.TableMappings.Add("Table", "livros")

        Try
            ' Preenche o DataSet.
            m_DataSet = New DataSet()
            data_adapter.Fill(m_DataSet)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        ' cria um DataView para os dados e define as permissões para editar , excluir e incluir como false
        m_DataView = New DataView(m_DataSet.Tables("livros"))
        m_DataView.AllowDelete = False
        m_DataView.AllowEdit = False
        m_DataView.AllowNew = False

        ' vincula o controle DataGrid ao dataview
        dglivros.DataSource = m_DataView
    End Sub
End Class

 

para você entender:

mome_BancoDados = Application.StartupPath()

mome_BancoDados = mome_BancoDados.Substring(0, mome_BancoDados.LastIndexOf("\"))

mome_BancoDados = mome_BancoDados & "\livros.mdb"

O código acima procura pelo banco de dados no diretório da aplicação e monta o nome corretamente do caminho para localizar o banco de dados
 

        ' cria um DataView para os dados e define as permissões para editar , excluir e incluir como false

        m_DataView = New DataView(m_DataSet.Tables("livros"))

        m_DataView.AllowDelete = False

        m_DataView.AllowEdit = False

        m_DataView.AllowNew = False
 

O código acima é que realmente faz com que os dados do grid sejam somente leitura. Criei um objeto DataView e defini as permissões para alteração, exclusão e  edição como false. Para exibir os dados no grid fazemos:

 

        ' vincula o controle DataGrid ao dataview
        dglivros.DataSource = m_DataView

 

Até a próxima dica VB.NET... 


José Carlos Macoratti