VB.net slow form/datagrid loading

I'm populating a datagrid on the loading of a form.  The code works fine but now that all the data has been imported into the sql database, the form is taking ages to load.  I'm not sure if i'm just not filling the datagrid correctly.  Any help would be appreciated.

Public Class frmShareInfo
    Dim cmd As SqlCommand
    Dim myAdapter As New SqlDataAdapter
    Dim comBuilder As SqlCommandBuilder
    Dim ds As DataSet
    Dim mytable As DataTable
    Dim myrow As Data.DataRow
    Dim rownumber As Integer
    Dim txtaccount = frmMain.txtFilename.Text
    Dim con As New SqlConnection
Private Sub frmShareInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sqlConnection1 As New GlobalConnection
       con.ConnectionString = sqlConnection1.ConnectionString
            myAdapter.SelectCommand = New SqlCommand("SELECT * FROM ShareInfo WHERE Filename = '" & (txtaccount) & "'", con)
            comBuilder = New SqlCommandBuilder(myAdapter)
            'rownumber = 0
        Catch ex As Exception
        End Try
    End Sub    
Private Sub FillDataGrid()
            ds = New DataSet()
            myAdapter.Fill(ds, "ShareInfoTable")
            mytable = ds.Tables("ShareInfoTable")
            DataGridView1.DataSource = ds.Tables("ShareInfoTable")
            DataGridView1.DataMember = "ShareInfoTable"
            DataGridView1.Columns(0).Visible = False
            DataGridView1.Columns(6).Visible = False
        Catch ex As Exception
        End Try
    End Sub
End Class

Open in new window

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

When do you enter the file name
Because first time when the form loads,there is not parameter.In that case your query will fail for the where condition.

Pass a default value in the query for the first time (form load) and then based on some event reload the grid for the desired parameter
ShepweddAuthor Commented:
The filename is entered in the main form (frmMain) and is accessed by frmShareInfo via...

Dim txtaccount = frmMain.txtFilename.Text  

txtaccount is then used in the query.
Is the query running quicker in the back end query analyzer.If not you might need to do indexing on filename field.
Also try to use specific query like select f1,f2 instead of *.
Next thing also would be do use paging,so that you dont have to load all at once
Exploring ASP.NET Core: Fundamentals

Learn to build web apps and services, IoT apps, and mobile backends by covering the fundamentals of ASP.NET Core and  exploring the core foundations for app libraries.

ShepweddAuthor Commented:
the query runs fine in the query analyzer, and i've tried using a specific query and that's made no difference.  

Some of the data that's being returned is just a couple of rows so i don't think paging's an issue.

Any other ideas?
Using the VirtualMode on the datagridview may help but there is also some room for optimizing your code. For example, why do you need this
mytable = ds.Tables("ShareInfoTable")
I dont see mytable being used anywhere. Also, use a DataTable instead of a DataSet to populate the grid because its only one table. Also, why do you need this?
Dim sqlConnection1 As New GlobalConnection
       con.ConnectionString = sqlConnection1.ConnectionString

Why not store the connection string in settings and use it directly instead of create a connection just to get the connectionstring!
ShepweddAuthor Commented:
Thanks for your suggestions - I tried them but it didn't make any difference.
What i did find while trawling the net was this site http://www.developerdotstar.com/community/node/706 which did help a lot, it's apparently a painting issue rather than a data issue.
It's a lot better than it was but still not brilliant so any other suggestions will be greatly appreciated.
ShepweddAuthor Commented:
Solved myself. Was filling my dataset everytime a query was being performed...doh!

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It does not look like you are filling multiple times from the code above.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.