Solved

Datagridview fails on form load evemt

Posted on 2009-07-03
5
314 Views
Last Modified: 2013-11-08
Hi All

I am having a bit of a weird issue trying to create a form that displays only a datagridview. I am using VB,net 2009

I created a sub routine to run when the forms new function is called, I pass this function thre parameters which are then fed into a stored procedure which will in turn populate the dataset and i hope that datagrid eventually.

The problem is that when I try and load the data from the dataset into the data grid i get an error saying that the object refrence is not set to an instance of the object. I am confused as the code for the datagridview is identical (as far as i can see) to another sub routing which works perfectly.

Any ideas on this one?

incidentally I get the same error when i put the dataset code in the form load event and if i put the binding code in the same routine as the dataset load sub

thanks in advance
Form opening code:
    Private Sub EURb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EURb.Click
        Dim d1 As Date = DatePicker.Value.AddMonths(-1).AddDays(-DatePicker.Value.Day)
        Try
            If Not IsNothing(f3) Then
                If Not f3.IsDisposed Then
                    f3.WindowState = FormWindowState.Normal  ' Optional
                    f3.BringToFront()  '  Optional
                Else
                     f3 = New HistoryDisplay("EUR", "CASH", d1)
                     f3.Show()
                End If
            Else
                f3 = New HistoryDisplay("EUR", "CASH", d1)
                f3.Show()
             End If
        Catch ex As Exception
            MsgBox(ex.Message, , "Load Report")
        End Try
    End Sub
 
The new() subroutine:
Sub New(ByVal CCY As String, ByVal Table As String, ByVal Date2 As Date)
        'CCY1 = CCY
        'Table1 = Table
        'Date1 = Date2
        Dim CONNSTR As String = "integrated security=SSPI;data source='CFPD8-CA\SQLEXPRESS';initial catalog=CFltd"
        Dim cn As New SqlConnection(ConnStr)
         datrades = New SqlDataAdapter("CashLadderGetFullDetails", cn)
        datrades.SelectCommand.CommandType = CommandType.StoredProcedure
        datrades.SelectCommand.Parameters.AddWithValue("@Date", Date2.Date)
        datrades.SelectCommand.Parameters.AddWithValue("@CCY", CCY)
        Try
            cn.Open()
            datrades.Fill(dsTrades, "Trades")
        Catch ex As Exception
            MsgBox(ex.Message, , "Loading Data")
        Finally
            cn.Close()
        End Try
    End Sub
 
   Private Sub HistoryDisplay_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         DataGrid1.DataSource = dsTrades
        DataGrid1.DataMember = "Trades"
    End Sub

Open in new window

0
Comment
Question by:ChrisAllison
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 23

Accepted Solution

by:
Jens Fiederer earned 167 total points
ID: 24812751
I suspect at the time the form's constructor is called, its controls have not been created yet and can't be populated.

You SHOULD be able to bind when the form is loaded.

0
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 166 total points
ID: 24815364
Did you set dsTrades to a new object before you passed it to Fill() (either in the constructor or statically)?
// Statically
Dim dsTrades As New DataSet()  // Initialized
 
Sub New(ByVal CCY As String, ByVal Table As String, ByVal Date2 As Date)
...
 
// Constructor
Dim dsTrades As DataSet()  // declared-only
 
Sub New(ByVal CCY As String, ByVal Table As String, ByVal Date2 As Date)
    dsTrades = new DataSet()

Open in new window

0
 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 167 total points
ID: 24821159
Place your code inside Load or Shown event of the form instead of new. Your code inside new will be executed before ALL other code in the form hence there are no controls created yet and i think at that the stage the form itself is not created yet.
0
 

Author Closing Comment

by:ChrisAllison
ID: 31599520
thanks for the comments chaps, I got around the problem by placing the code in the load event. My issue with that origianlly was passing data to the stored procedure to dictate what data I load.

the method i attempted to try did work in another 2008 project, which has puzzled me, at least my workaround works!
thanks for the help guys
0

Featured Post

MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question