Я не могу решить это.
См. Код ниже, при добавлении (второй) строки к сетке данных (в запущенной программе) я получаю исключение ниже;
исключение datagridview: System.IndexOutOfRangeException: нет значения для индекса 1. в System.Windows.Forms.CurrencyManager.get_Item (Int32index) bij System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError (Int323) rowinde
погуглил решения, но не могу найти правильное.
У кого-нибудь есть идеи, как это решить?
(написал другие подобные программы с большим количеством данных в наборе данных, где у меня нет этой проблемы, поэтому я действительно не понимаю, почему она не работает, и я только недавно начал изучать код :))
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Garages
{
public partial class FrmGarages : Form
{
DataSet datasetGarages = new DataSet("Garages");
BindingSource bindingSourceGarages = new BindingSource();
public FrmGarages()
{
InitializeComponent();
datasetGarages.Tables.Add(createDataTableGarages());
bindingSourceGarages.DataSource = datasetGarages.Tables["Garages"];
txbChassisnummer.DataBindings.Add("Text", bindingSourceGarages, "Chassisnummer");
txbKenteken.DataBindings.Add("Text", bindingSourceGarages, "Kenteken");
dtpFabricagedatum.DataBindings.Add("Value", bindingSourceGarages, "Fabricagedatum");
dtpDatumOpKenteken.DataBindings.Add("Value", bindingSourceGarages, "DatumOpKenteken");
txbMerk.DataBindings.Add("Text", bindingSourceGarages, "Merk");
txbType.DataBindings.Add("Text", bindingSourceGarages, "Type");
txbKleur.DataBindings.Add("Text", bindingSourceGarages, "Kleur");
txbBrandstof.DataBindings.Add("Text", bindingSourceGarages, "Brandstof");
txbAantalKilowats.DataBindings.Add("Text", bindingSourceGarages, "AantalKilowats");
txbAantalPortieren.DataBindings.Add("Text", bindingSourceGarages, "AantalPortieren");
txbModel.DataBindings.Add("Text", bindingSourceGarages, "Model");
txbTrekhaak.DataBindings.Add("Text", bindingSourceGarages, "Trekhaak");
cmbMerk.DataSource = bindingSourceGarages;
cmbMerk.DisplayMember = "Merk";
cmbType.DataSource = bindingSourceGarages;
cmbType.DisplayMember = "Type";
cmbBrandstof.DataSource = bindingSourceGarages;
cmbBrandstof.DisplayMember = "Brandstof";
cmbAantalPortieren.DataSource = bindingSourceGarages;
cmbAantalPortieren.DisplayMember = "AantalPortieren";
dgvGarages.DataSource = bindingSourceGarages;
}
private void btnEinde_Click(object sender, EventArgs e)
{
this.Close();
}
private DataTable createDataTableGarages()
{
DataTable dtGarages = new DataTable("Garages");
DataColumn Chassisnummer = new DataColumn("Chassisnummer", typeof(string));
Chassisnummer.Unique = true;
dtGarages.Columns.Add(Chassisnummer);
//dtGarages.Columns.Add("Chassisnummer", typeof(string));
//dtGarages.Columns["Chassisnummer"].Unique = true;
dtGarages.Columns.Add("Kenteken", typeof(string));
dtGarages.Columns["Kenteken"].MaxLength = 8;
dtGarages.Columns["Kenteken"].Unique = true;
dtGarages.Columns["Kenteken"].AllowDBNull = true;
dtGarages.Columns.Add("FabricageDatum", typeof(DateTime));
dtGarages.Columns.Add("DatumOpKenteken", typeof(DateTime));
dtGarages.Columns["DatumOpKenteken"].AllowDBNull = true;
dtGarages.Columns.Add("Merk", typeof(string));
dtGarages.Columns["Merk"].MaxLength = 25;
dtGarages.Columns.Add("Type", typeof(string));
dtGarages.Columns["Type"].MaxLength = 25;
dtGarages.Columns.Add("Kleur", typeof(Color));
dtGarages.Columns.Add("Brandstof", typeof(string));
dtGarages.Columns["Brandstof"].MaxLength = 10;
dtGarages.Columns.Add("AantalKilowats", typeof(double));
dtGarages.Columns.Add("AantalPortieren", typeof(byte));
dtGarages.Columns.Add("Model", typeof(string));
dtGarages.Columns["Model"].MaxLength = 15;
dtGarages.Columns.Add("Trekhaak", typeof(bool));
dtGarages.PrimaryKey = new DataColumn[] { Chassisnummer };
return dtGarages;
}
private void dgvGarages_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (this.dgvGarages.Columns[e.ColumnIndex].Name.Equals("Kleur"))
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
this.dgvGarages.Rows[e.RowIndex].Cells[6].Value = colorDialog1.Color;
}
}
}
private void dgvGarages_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dgvGarages.Refresh();
}
}
}