Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: VB.NET DataGridView
Hi,
I'm using DatagridView in my VB.Net Project. Here the data can only be committed after users confirmation via a separate button. Though the user can delete the added rows till that time. I'm trying to make deleted rows invisible by following code:
 
DataGridView1.Rows(selectedIndex).Visible = False
 

However, getting following runtime error:
System.InvalidOperationException: "Uncommitted new row cannot be made invisible"
 

Please help in resolving the error or suggest an alternative to achieve the requirement.
 

Thanks in advance-*
Posted 15-Apr-13 6:42am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Don't commit the changes back to the database. Refresh the data set you've bound the grid to and whalla! No more uncommited records.
  Permalink  
Comments
Vish0512 at 15-Apr-13 19:59pm
   
Hi Dave,
Thanks for your quick response... However, I've one more query here. How to refresh the dataset (I mean which method to use) as I didn't find any "refresh" method linked to dataset.
I tried with below code but it didn't work
DataGridView1.Refresh()
DataGridView1.Parent.Refresh()
Dave Kreskowiak at 15-Apr-13 22:15pm
   
How did you fill the dataset to begin with? You do the exact same thing.
Vish0512 at 19-Apr-13 12:20pm
   
Hi Dave,
I was out of action for some days so delay in the response!!
See I'm totally new to VB.Net and as per my understanding when I fill my Dataset, the data is loaded from DB as per logic (our internal query for the fill method). However, in my case, I don't want to insert data in the DB and before committing, I want change in the set of data.
 
Let me give you complete picture. The requirement is for a project based on POS(Point of Sale) concept, where a user will select products and a record will be inserted in DGV. now if that user wants to remove any of the selected products, the system should allow him to do so before generating bill. So only one out of all uncommitted records will be removed and rest will remain visible
 
It is only when the user will click on Create Bill that the system should actually commit the record in DB.
Dave Kreskowiak at 19-Apr-13 14:44pm
   
You don't store anything in the DGV. You should be storing the records in a DataSet/DataTable and manipulating that. The DGV is bound to this and is the control that displays the records on screen and allows editing them. You do NOT hide records in the DGV. If you don't want a record displayed, remove it from the datatable your bound the DGV to.
 

Vish0512 at 20-Apr-13 6:37am
   
Vow!! It was that simple. and I thought that making any change in datatable will directly run query on DB.. :-P
Thanks a lot Dave. That was really helpful.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 8,284
1 Sergey Alexandrovich Kryukov 7,327
2 DamithSL 5,614
3 Manas Bhardwaj 4,986
4 Maciej Los 4,920


Advertise | Privacy | Mobile
Web03 | 2.8.1411023.1 | Last Updated 15 Apr 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100