Link to home
Start Free TrialLog in
Avatar of Jeanette Durham
Jeanette DurhamFlag for United States of America

asked on

How do I tie a bindingnavigator control to a datagrid without using the designer

Ok, I'm trying to make a .net application which is very simple. The idea is that it starts with some opening arguments which tell it:

  1. Which db to open (the path)
  2. What query to use to get data
  3. What table it is to read from

So, what this means is that I need to actually change all the datasources and everything programmatically at run time.

I'm actually very new to .net, altho I have programmed in vb for about 7 months. The reason I'm doing this in .net is because vb6 doesn't have some features which my boss wants in the program.

Anyways, I have no idea how to do this in .net, and I've been trying to figure it out all day. It's very easy in vb6, I just set the datasource property. The best I can determine is that in order to do this I need to use a bindingnavigator control and a datagrid control.

Does anyone know how to do this through code only?
Avatar of Jeanette Durham
Jeanette Durham
Flag of United States of America image

ASKER

This is what I ended up doing, it seems to work. If anyone knows of any particular way I might do this better please let me know. Thanks!

    Private bindingSource1 As New BindingSource

    private sub bindGrid()        
        dodatagridinit()
        Dim dbAdapter = New OleDbDataAdapter()
        Dim dtResults = New DataTable("Results")
        dbAdapter.Fill(dtResults, mydb.myRecordSet)
        Me.bindingSource1.DataSource = dtResults
        Me.BindingNavigator1.BindingSource = bindingSource1
        Me.mydatagrid.DataSource = bindingSource1
        Me.mydatagrid.AutoResizeColumns()
        dbAdapter = Nothing
        dtResults = Nothing
    End Sub

    Private Sub dodatagridinit()
        Me.mydatagrid.DataSource = Nothing
        Me.mydatagrid.ColumnHeadersVisible = True
        Me.mydatagrid.AllowDrop = False
        'Me.mydatagrid.AllowSorting = True
        'Me.mydatagrid.CaptionText = "These Records Will Be Used To Print Your Mailing Labels"
        'Me.mydatagrid.PreferredColumnWidth = 100
        'Me.mydatagrid.PreferredRowHeight = 20
    End Sub
This is what I ended up doing. It worked Great. So that's that.

Public Sub bindTable()
        dodatagridinit()

        'Dim con As New OleDbConnection(mydb.myDbVars.myConnectStr)
        Dim conn As New OleDbConnection(mydb.myDbVars.myConnectStr)
        Dim myquerystr$ = CStr(mydb.myDbVars.myQueryStr)
        'myConnection.ConnectionString = myquerystr
        dbAdapter = New OleDb.OleDbDataAdapter(myquerystr, conn)
        mycb = New OleDbCommandBuilder(dbAdapter)
        ''original''    Dim cb As New OleDbCommandBuilder(dbAdapter)

        dbAdapter.Fill(dtResults)
        myConnection = conn
        'Me.lblTotal.Text = "Total: " &

        myConnection.Open()
        Me.bindingSource1.DataSource = dtResults
        Me.BindingNavigator1.BindingSource = bindingSource1
        Me.mydatagrid.DataSource = bindingSource1
        Me.mydatagrid.AutoResizeColumns()
        hideInvisColumns()
    End Sub
ASKER CERTIFIED SOLUTION
Avatar of PashaMod
PashaMod

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial