Hey allemaal, ik heb een probleem met het wijzigen van data in een dataset. Wanneer ik items uit een gefilterde of gesorteerde dataview ga wijzigen dan wijzig ik de items in de oorspronkelijke dataview. Dit klinkt misschien vreemd maar misschien legt dit eea uit
:
Oorspronkelijke view:

Gefilterde view

Je kunt zien dat ik in het eerste scherm 3 rijen heb. Wanneer ik nu de 2e wil editen, gaat dit prima. Als ik echter sorteer of filter, en daarna bijvoorbeeld nummer 2 aanpas, dan wijzigt hij dit op de 1ste regel van de oorspronkelijke view..
code uit de dbConnect class
Constructor van klanten.cs
Wijzig code
Is er iemand die me hiermee zou kunnen helpen? Ik ben al een paar dagen bezig, maar krijg het niet voor elkaar..
Oorspronkelijke view:

Gefilterde view

Je kunt zien dat ik in het eerste scherm 3 rijen heb. Wanneer ik nu de 2e wil editen, gaat dit prima. Als ik echter sorteer of filter, en daarna bijvoorbeeld nummer 2 aanpas, dan wijzigt hij dit op de 1ste regel van de oorspronkelijke view..
code uit de dbConnect class
code:
1
2
3
4
5
6
7
8
9
10
11
12
| cn = new SQLiteConnection("Data Source=db.db;Version=3");
//Create DataSet
ds = new DataSet();
//Fill the DataSet with Klanten
da1 = new SQLiteDataAdapter("SELECT * FROM klanten ORDER BY tussenvoegsel",cn);
da1.TableMappings.Add("Table","klanten");
da1.Fill(ds);
commandBuilder = new SQLiteCommandBuilder(da1);
dsView = ds.DefaultViewManager; |
Constructor van klanten.cs
code:
1
2
3
4
5
6
7
8
| dbCon = new DbConnectNew(); grdKlanten.DataSource = dbCon.dsView; grdKlanten.DataMember = "klanten"; cmKlanten = (CurrencyManager)this.BindingContext[grdKlanten.DataSource, grdKlanten.DataMember]; ((DataView)cmKlanten.List).AllowNew = false; ((DataView)cmKlanten.List).AllowEdit = false; ((DataView)cmKlanten.List).AllowDelete = false; |
Wijzig code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| DataRow myRow;
myRow = dbCon.dsView.DataSet.Tables["klanten"].Rows[cmKlanten.Position];
myRow.BeginEdit();
myRow["voornaam"] = txtBoxVoornaamWijzig.Text;
myRow["tussenvoegsel"] = txtBoxTussenvoegselWijzig.Text;
myRow["achternaam"] = txtBoxAchternaamWijzig.Text;
myRow.EndEdit();
dbCon.cn.Open();
int rowsAffected = 0;
modifiedRows = dbCon.dsView.DataSet.Tables["klanten"].DataSet.GetChanges(System.Data.DataRowState.Modified);
if (((modifiedRows) != (null)))
{
rowsAffected = dbCon.da1.Update(modifiedRows,"klanten");
}
dbCon.cn.Close();
dbCon.dsView.DataSet.AcceptChanges(); |
Is er iemand die me hiermee zou kunnen helpen? Ik ben al een paar dagen bezig, maar krijg het niet voor elkaar..
[ Voor 17% gewijzigd door Skate2000 op 27-10-2004 11:15 ]