Solved

Why won't the datagridview always show all records in a dataset?

Posted on 2006-07-10
7
364 Views
Last Modified: 2008-02-20
have a datagridview control that works fine if there are less than four lines displayed, but gets strange when there are four or more.

When a user changes the selected date, the dataset is purged and then refilled with data appropriate to that date.  I use Me.Test_for_VBdotNetDataSet_Dynamic.Clear() to clear it and Me.Native_TimeTrackingTableAdapter.Fill(Me.Test_for_VBdotNetDataSet_Dynamic.Native_TimeTracking, Me.Label5.Text, Me.MonthCalendar1.SelectionStart) to refill it.  The parameters are passed to the query that fills the dataset.  After refilling, the dataset has five records.  I can loop through those records and confirm that they are, in fact, what is in the database.  The datagridview is bound to the dataset.  When I check the number of lines in the datagridview though, (Me.DataGridView1.Rows.Count.ToString) I get four rows.  

Aparently, without regard to the number of records in the dataset the maximum number of rows that will display is four.  I have tested with four, five, and six returned records, but I do not have data for more than that.  Is there a parameter that I may have inadvertently set that prevents an initial display of more than a certain number of records?

This problem is preventing effective use of the tool I have developed and needs to be resolved ASAP.  I have looked and tested and pondered, and cannot see where in my code a problem might be.  At this point, I am beginning to believe that this may be a problem with the control itself.  If anyone has any ideas, please help me out.  Thanks in advance.

Trevor

0
Comment
Question by:tdhughesCPA
[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
  • 3
7 Comments
 
LVL 34

Expert Comment

by:Sancler
ID: 17075093
Check out the .RowCount property

Roger
0
 

Author Comment

by:tdhughesCPA
ID: 17075158
That returns the same number of rows, and te same behavior is maintained where the datagridview will not exceed four lines - even when there is what should be a five line grid.

Thanks for your input

Trevor
0
 
LVL 34

Expert Comment

by:Sancler
ID: 17076154
I cannot reproduce the behaviour you're reporting, and I haven't come across it in quite the form you are reporting it.  Which makes me doubt that it is a problem with the DataGridView itself.  It may be something to do with the bindings.  I think you need to do a specific check that the DataGridView is, at the stage at which you are having the problem, actually bound to the datatable that has been updated.

To check this I suggest that, after updating the dataset, you track back through the databinding to the actual datatable that the DataGridView IS bound to rather than just checking the row.count of the datatable that it SHOULD be bound to.  Unfortunately, this can be a convoluted process.  The DataGridView's immediate DataSource can be a BindingSource, or a DataSet, or a DataTable, or a Dataview.  If it is a BindingSource then the DataSource of that can be a DataSet, a DataTable, or a Dataview.  If it is a DataSet then the DisplayMember will be a specific DataTable within that.  If it is a DataView then the DataTable you want is the .Table of that.  

To track back, you have to know, or work out, what the precise sequence is in the case concerned.  It is possible to code for this generically, on the lines of

   If TypeOf MyDataGridView Is BindingSource Then
      Dim bs As BindingSource = CType(MyDataGridView.DataSource, BindingSource)

and so on.  But I have found it easier to code for the specific instance I am trying to debug (the code is only going to be temporary, for debugging purposes, anyway) on the lines

   MsgBox(MyDataGridView.DataSource.ToString)

and then, in the light of what that shows, code a line to deal with that and so on, until the actual DataTable is determined.  

I know that you KNOW what DataTable the DataGridView is bound to, and you've checked that, and it does have the extra rows in it.  So you may well feel that this convoluted extra check is a waste of time.  But if you've checked everything else, then perhaps there's nothing to lose.  And things don't always happen as we expect them to - e.g

http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21911005

Roger
0
 
LVL 34

Accepted Solution

by:
Sancler earned 250 total points
ID: 17077866
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…

707 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