Bernard Thouin
asked on
VB.Net datagridview, need to set some columns automatically when user inserts a new row
Hi
I have developed a number of console apps, but this is my first Windows forms-based app, with a DataGridView control (which is showing the data in a datatable) where users can add rows. When they insert a new row, I want to set some columns of that row automatically (insertion date/time, user name, that kind of stuff).
I don't knw how to do that... Can you help ?
Thanks
Bernard
I have developed a number of console apps, but this is my first Windows forms-based app, with a DataGridView control (which is showing the data in a datatable) where users can add rows. When they insert a new row, I want to set some columns of that row automatically (insertion date/time, user name, that kind of stuff).
I don't knw how to do that... Can you help ?
Thanks
Bernard
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Scott
Thanks a lot, it works fine.
Just one thing I first stumbled on: why is the cell name = <datatable column name> & "DataGridViewTextBoxColumn ", instead of just being the datatable column name ? ?
Thanks a lot, it works fine.
Just one thing I first stumbled on: why is the cell name = <datatable column name> & "DataGridViewTextBoxColumn
If you "autobind" a DataGridView to a Datatable, the DGV cells should be named the same as your DataTable columns. For example, if my datatable has a column named "CustomerName", by DGV should contain a column named "CustomerName" as well.
ASKER
Well I defined a dataset, linked it to the form in my app, then added the grid view and set it datasource to be one of the datatables in the dataset, I don't know if that is what you call autobinding, but the result is that the column names are starting with the "real" column name but then this "DataGridViewTextBoxColumn " gets appended to it.
I found out because I got an error telling me the column name <datatable column name> could not be found in the <MyGrid>.Rows(e.RowIndex). Cells("<da tatable colum name>") statement, so I debugged and printed out the used column name.
I found out because I got an error telling me the column name <datatable column name> could not be found in the <MyGrid>.Rows(e.RowIndex).
That's odd, and I'm not sure why that would occur. When I bind my DGV to a Datatable, the columns names are exactly the same as those of the Datatable.
I don't generally use Datasets, however. I'm curious if that's the reason.
I don't generally use Datasets, however. I'm curious if that's the reason.
ASKER
I'm using VS2013, maybe that also makes a difference ?
Anyway, it works fine that's the main thing, you get the points, thanks a lot :-)
Bernard
Anyway, it works fine that's the main thing, you get the points, thanks a lot :-)
Bernard
Open in new window
The key here is that at least one of the fields in the newly created row is null, or in some other way it's evident that the row is new and not properly initialized. If you get a match on that when .CurrentCellChanged, use that as the flag to change the other fields.