Я создал таблицу с 7 столбцами (идентификатор, дата, тип, имя, расходы, доход, сальдо) в DataGridView. У меня также есть datetime / combobox / texfields и кнопка для добавления соответствующих данных в строки. Пользователь должен иметь возможность добавлять / удалять строки и сохранять их прогресс (чтобы иметь возможность вернуться к нему). Насколько я понимаю, мне нужно связать DataTable с DataGridView, однако я продолжаю получать исключения, такие как «поле идентификатора уже существует», и следующие столбцы (EXPENSES, INCOME, SALDO) дублируются. Кто-нибудь может указать мне, где я не прав, и показать правильный способ сделать это? Я пробовал несколько подходов, но все еще не могу его получить.
public partial class Form1 : Form
{
DataTable budgetTable = new DataTable();
public Form1()
{
InitializeComponent();
}
//adds a row to the table
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(cbbxType.Text) ||
string.IsNullOrWhiteSpace(expenseField.Text))
{
MessageBox.Show("'Type','Expence','Income' fields cannot be empty!");
}
else
DtgTable.DataSource = budgetTable;
DataColumn id = budgetTable.Columns.Add("ID", typeof(Int32));
DataColumn date = budgetTable.Columns.Add("DATE", typeof(DateTime));
DataColumn type = budgetTable.Columns.Add("TYPE", typeof(String));
DataColumn name = budgetTable.Columns.Add("NAME", typeof(String));
DataColumn exp = budgetTable.Columns.Add("EXPENSES", typeof(Int32));
DataColumn inc = budgetTable.Columns.Add("INCOME", typeof(Int32));
DataColumn sal = budgetTable.Columns.Add("SALDO", typeof(Int32));
DataRow row = budgetTable.NewRow();
row["ID"] = "01";
row["DATE"] = dateTime.Text;
row["TYPE"] = cbbxType.Text;
row["NAME"] = nameField.Text;
row["EXPENSES"] = expenseField.Text;
row["INCOME"] = incomeField.Text;
row["SALDO"] = 0;
budgetTable.Rows.Add(row);
}