-
Oct 15th, 2021, 01:25 PM
#1
Thread Starter
New Member
Cell value of First colum & last row in datagridview
Hello All,
I trained myself pretty well in visual basic, started vb.net recently ... there are a few new things in it for me. So far, I’ve managed to solve everything, but the next thing doesn’t work out but it seems pretty simple.
I want to read the value (number) of the last cell in the first column of a datagridview.
My code:
Code:
Public Class Material_Group
Public cellvalue As String
Public Sub read_last_numbering()
cellvalue = DataGridView1.Rows(DataGridView_MatGroup.Rows.Count)...?
End Sub
End Class
Thank you very much if anyone solves this mystery.
rgds,
P.
-
Oct 15th, 2021, 07:36 PM
#2
Re: Cell value of First colum & last row in datagridview
Firstly, it's good that you provided your code but you also need to describe the actual problem. Saying that something doesn't work is generally of little value. You need to specify exactly what you expect and what actually happens. If there's a compilation error or run-time exception, give us the error message and point out where it occurs. Sometimes we'll be able to work it out and sometimes we won't. Sometimes we might think we've worked it out when your issue is something else entirely. If you just give us all the information in the first place, there's no guessing required.
-
Oct 15th, 2021, 07:42 PM
#3
Re: Cell value of First colum & last row in datagridview
I see two potential issues in the code you posted. Firstly, why are you using the row count from one grid to index the Rows collection of a different grid? Maybe there's a legitimate reason for that but, if so, that is something you should have included in your explanation. Secondly, assuming that you should be using the same grid in both cases, the Rows collection is, like pretty much every other collection, zero-based. That means that the index of the last item is one less than the count of the items in the list. I suspect that this:
vb.net Code:
DataGridView1.Rows(DataGridView_MatGroup.Rows.Count)
should be this:
vb.net Code:
DataGridView1.Rows(DataGridView1.Rows.Count - 1)
That expression will return a DataGridViewRow. If you want to know how to get a cell from a row, read the relevant documentation. You should have the Docs home page favourited in your browser but you can also go directly to the page for a type or member by clicking on that type or member in the code window and pressing F1. Context-sensitive Help has been a thing in Windows for a long time. Once you have the cell, you can read the relevant documentation to see how to get the value stored in that cell.
-
Oct 16th, 2021, 03:02 AM
#4
Re: Cell value of First colum & last row in datagridview
Originally Posted by jmcilhinney
vb.net Code:
DataGridView1.Rows(DataGridView1.Rows.Count - 1)
That will work fine, unless you’re allowing users to add new rows, and the new row is at the last row of the dgv
vb.net Code:
DataGridView1.Rows(DataGridView1.Rows.Count - 2).Cells(0).Value
- Coding Examples:
- Features:
- Online Games:
- Compiled Games:
-
Oct 16th, 2021, 07:35 AM
#5
Re: Cell value of First colum & last row in datagridview
An alternative is to load the DataGridView by setting the DataSource be it a DataTable or a list. Let's say columns are EmployeeID, LastName, FirstName, Country in a DataTable and populated from a database table (could be from a text file, excel etc).
- Read data into a DataTable
- Assign the DataTable to a BindingSource
- Assign the BindingSource to the DataSource of the DataGridView
- Present data
In a button click event check if there is a current row, if so, cast Current property of the BindingSource to a DataRow and get data. In this case the DataGridView column names are the same as the columns in the DataTable, alternately you can create columns for the DataGridView in code, set data property for each column to a column from the DataTable then set use the code below.
Code:
Public Class Form1
Private EmployeeBindingSource as New BindingSource
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
EmployeeBindingSource.DataSource = AccessOperations.ReadEmployees()
DataGridView1.DataSource = EmployeeBindingSource
End Sub
Private Sub CurrentRowButton_Click(sender As Object, e As EventArgs) Handles CurrentRowButton.Click
if EmployeeBindingSource.Current IsNot nothing
Dim row = Ctype(EmployeeBindingSource.Current, DataRowView).Row
Dim id = row.Field(of Integer)("EmployeeID")
dim FirstName = row.Field(Of string)("FirstName")
dim LastName = row.Field(Of string)("LastName")
dim Country = row.Field(Of string)("Country")
MessageBox.Show($"{id},{FirstName},{LastName},{Country}")
End If
End Sub
End Class
Using the above methods means never having to work with cells which is the better option 99 percent of the time.
Now to get the last row column values
Code:
Private Sub LastRowButton_Click(sender As Object, e As EventArgs) Handles LastRowButton.Click
Dim row = Ctype(EmployeeBindingSource(EmployeeBindingSource.Count -1),DataRowView).Row
Dim id = row.Field(of Integer)("EmployeeID")
dim FirstName = row.Field(Of string)("FirstName")
dim LastName = row.Field(Of string)("LastName")
dim Country = row.Field(Of string)("Country")
MessageBox.Show($"{id},{FirstName},{LastName},{Country}")
End Sub
Or
Code:
Private Sub LastRowButton_Click(sender As Object, e As EventArgs) Handles LastRowButton.Click
Dim row = Ctype(EmployeeBindingSource(DataGridView1.Rows.Count -1),DataRowView).Row
Dim id = row.Field(of Integer)("EmployeeID")
dim FirstName = row.Field(Of string)("FirstName")
dim LastName = row.Field(Of string)("LastName")
dim Country = row.Field(Of string)("Country")
MessageBox.Show($"{id},{FirstName},{LastName},{Country}")
End Sub
-
Oct 17th, 2021, 02:02 AM
#6
Thread Starter
New Member
Re: Cell value of First colum & last row in datagridview
Thanks a lot, a I solved it in the same way.
-
Oct 17th, 2021, 02:10 AM
#7
Thread Starter
New Member
Re: Cell value of First colum & last row in datagridview
My expectation was clear and very simple.
I had a deficiency in the syntax, it made no sense to talk about an error message. The the two different grid were a mistake when I entered the code.
-
Oct 17th, 2021, 02:27 AM
#8
Re: Cell value of First colum & last row in datagridview
Originally Posted by peter.lenkei
it made no sense to talk about an error message
That might explain why I said "IF" there's an error. If there's no compilation error or run-time exception then it must be the behaviour that indicates that something is wrong, so describe that behaviour. Just provide all the relevant information, whatever that might be. If you expect one thing to happen and something else happens, describe both those things. Pretty simple stuff. Instead of trying to make out that there was nothing wrong with your question, just accept the constructive criticism and move on. If you do better in future then you maximise the possibility of getting the help you want, which you should consider a good thing. I have a computer science degree, I have been a professional developer for over two decades and I've been posting on this site for over sixteen years. That doesn't mean that I know everything, by any means, but it does mean that I have a fairly good idea of how to write a good question on a forum. Do you really think you know better? It's not about ego. It's about everyone getting the best out of the system. We don't have to waste our time or yours trying to work out the details that you already know, so you get the best help as quickly as possible. It's a win-win.
-
Oct 17th, 2021, 03:59 AM
#9
Thread Starter
New Member
Re: Cell value of First colum & last row in datagridview
I understand what you mean but we talking about 2 different things.
Once again: there was no relevant error message or unexpected behavior because my code wasn't complete beceuse I don't know the exact syntax.
I’m sure I don’t know better than you and no, it’s not about EGO at all. At least not about mine. Maybe my question was wrong, but there were those who understood the problem exactly and provided a solution. I can accept the constructive (or not constructive) criticism but that was not it.
Have a good day.
Last edited by peter.lenkei; Oct 17th, 2021 at 04:39 AM.
-
Oct 17th, 2021, 04:55 AM
#10
Thread Starter
New Member
Re: Cell value of First colum & last row in datagridview
Originally Posted by .paul.
That will work fine, unless you’re allowing users to add new rows, and the new row is at the last row of the dgv
vb.net Code:
DataGridView1.Rows(DataGridView1.Rows.Count - 2).Cells(0).Value
There is an MSSSQL database behind the datagrid, users can add a new line via another form which writes the data directly to the SQL databse. In the new form, I handled updating datagrid from the SQL database after adding a new row. Direct input to datagrid is not allowed.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|