Hoi,
Ik heb dus een datagrid "grdInvoices", met daaraan een Dataset "dsResult" gekoppeld.
De dataset bevat een aantal kolommen : ["VATCODE"]; ["TEST1"]; ["TEST2"]
Manueel voeg ik er een DataGridViewComboBoxColumn toe. Aan deze DataGridViewComboBoxColumn hangt er een andere dataset -> "dsVatCodes";
Tot daar is alles goed -> Ik krijg mijn "grdInvoices" met al mijn records en een combobox waar ik "data" kan uitkiezen.
De bedoeling was wanneer ik iets uit de "combobox" kies, dat ik daarna de waarde moet plaatsen in ["VATCODE"] kolom van dsResult (wordt automatisch aangepast in dataGridView normaal gezien).
Ik weet hoe de combobox zelf aan te spreken met "".
Maar dan beginnen de problemen. Als ik een "combobox" waarde kies en er wordt iets verandert in mijn "dataset" krijg ik de volgende fout :
Daarna kan ik doorwerken en wordt de waarde ingevuld in ["VATCODE"]. Maar telkesn als ik de combobox verander, krijg ik de bovenstaande error.
De code voor het invullen van ["VATCODE"]
De code voor het vormen van mijn "DataGridViewComboBoxColumn" en dataset (ik heb het wel vereenvoudigd):
Dus ik weet niet waar ik in de fout ga, ik verander de gegevens effectief op mijn "dsResult". Dus ik neem een waarde uit mijn combobox om de waarde van de "VATCODE" aan te passen. Hij vult de waarde effectief in, maar geeft dan de error.
Iemand die soortgelijke problemen heeft voorgehad of heb ik iets heel simpel over het oog gezien?
PS : Ik heb de code ingekort en wat naamveranderingen gedaan, zodat het hier past. Dus het werkt effetief tot het selecteren van een item in de combobox.
Ik heb dus een datagrid "grdInvoices", met daaraan een Dataset "dsResult" gekoppeld.
De dataset bevat een aantal kolommen : ["VATCODE"]; ["TEST1"]; ["TEST2"]
Manueel voeg ik er een DataGridViewComboBoxColumn toe. Aan deze DataGridViewComboBoxColumn hangt er een andere dataset -> "dsVatCodes";
Tot daar is alles goed -> Ik krijg mijn "grdInvoices" met al mijn records en een combobox waar ik "data" kan uitkiezen.
De bedoeling was wanneer ik iets uit de "combobox" kies, dat ik daarna de waarde moet plaatsen in ["VATCODE"] kolom van dsResult (wordt automatisch aangepast in dataGridView normaal gezien).
Ik weet hoe de combobox zelf aan te spreken met "".
Maar dan beginnen de problemen. Als ik een "combobox" waarde kies en er wordt iets verandert in mijn "dataset" krijg ik de volgende fout :
code:
1
2
3
4
5
6
7
| --------------------------- Dialoogvenster voor standaardfouten van DataGridView --------------------------- De volgende uitzondering is opgetreden in de DataGridView: System.ArgumentException: Kan de verzameling items niet wijzigen als de eigenschap DataSource is ingesteld. bij System.Windows.Forms.ComboBox.CheckNoDataSource() bij System.Windows.Forms.ComboBox.ObjectCollection.Clear() bij System.Windows.Forms.DataGridViewComboBoxCell.InitializeEditingControl(Int32 rowIndex, Object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) bij System.Windows.Forms.DataGridView.InitializeEditingControlValue(DataGridViewCellStyle& dataGridViewCellStyle, DataGridViewCell dataGridViewCell) Als u dit standaarddialoogvenster wilt vervangen, verwerkt u de gebeurtenis DataError. --------------------------- OK --------------------------- |
Daarna kan ik doorwerken en wordt de waarde ingevuld in ["VATCODE"]. Maar telkesn als ik de combobox verander, krijg ik de bovenstaande error.
De code voor het invullen van ["VATCODE"]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| int selectedIndex = ((ComboBox)sender).SelectedIndex;
if (selectedIndex > -1)
{
if (dsVatCodes.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in dsVatCodes.Tables[0].Rows)
{
string input = ((ComboBox)sender).Text.ToString().ToLower();
string databaseValue = row["taxschid"].ToString().ToLower();
if (databaseValue == input)
{
dsResult.Tables[0].Rows[grdInvoices.CurrentCell.RowIndex]["VATCODE"] = "Test";
}
}
}
} |
De code voor het vormen van mijn "DataGridViewComboBoxColumn" en dataset (ik heb het wel vereenvoudigd):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| String strSelect = "Select * from testTable";
dsResult = customQuery.ExecuteDataSet(strSelect);
DataColumn dcol= new DataColumn("VATCODE", typeof(System.String));
dsResult.Tables[0].Columns.Add(dcol);
if (resultGrid.Columns["TAXSCHID2"] == null)
{
DataGridViewComboBoxColumn dvcVatCodes = new DataGridViewComboBoxColumn();
dvcVatCodes.DataSource = dsVatCodes.Tables[0];
dvcVatCodes.Name = "TAXSCHID2";
dvcVatCodes.HeaderText = "TAXSCHID2";
dvcVatCodes.Width = 170;
dvcVatCodes.ValueMember = "id";
dvcVatCodes.DisplayMember = "taxschid";
dvcVatCodes.DataPropertyName = "id";
resultGrid.Columns.Add(dvcVatCodes);
}
//koppel ik de datasource aan de grdInvoices
grdInvoices.DataSource = dsResult.Tables[0]; |
Dus ik weet niet waar ik in de fout ga, ik verander de gegevens effectief op mijn "dsResult". Dus ik neem een waarde uit mijn combobox om de waarde van de "VATCODE" aan te passen. Hij vult de waarde effectief in, maar geeft dan de error.
Iemand die soortgelijke problemen heeft voorgehad of heb ik iets heel simpel over het oog gezien?
PS : Ik heb de code ingekort en wat naamveranderingen gedaan, zodat het hier past. Dus het werkt effetief tot het selecteren van een item in de combobox.